dajamanté är nöjd med hjälpen
dajamanté 5139 – Fd. Medlem
Postad: 2 feb 2019 08:04

En problem med många stjärnor ⭐️⭐️⭐️

Här kommer sista dagens-spännande-problem. Det gäller organisera tjärnorna i regelbundna rader. Enligt svårighetsgrad denna problem är busenkelt, men jag tyckte att man behövde fundera ordentligt.

Jag löste det med modulo av dem 2 första raden. Finns det en snabbare sätt?

Laguna Online 28529
Postad: 2 feb 2019 11:01

Modulo låter bra, men jag vet inte exakt hur du gör. Kan du skriva lite kod (eller pseudokod) här? Eller visa hur det blir med t.ex. 50 stjärnor.

Affe Jkpg 6630
Postad: 2 feb 2019 11:21
Laguna skrev:

Modulo låter bra, men jag vet inte exakt hur du gör. Kan du skriva lite kod (eller pseudokod) här? Eller visa hur det blir med t.ex. 50 stjärnor.

 Laguna, uppgiften är väl presenterad som en "kluring", så att du ska först själv presentera en möjlig lösning :-) 

Laguna Online 28529
Postad: 2 feb 2019 11:59
Affe Jkpg skrev:
Laguna skrev:

Modulo låter bra, men jag vet inte exakt hur du gör. Kan du skriva lite kod (eller pseudokod) här? Eller visa hur det blir med t.ex. 50 stjärnor.

 Laguna, uppgiften är väl presenterad som en "kluring", så att du ska först själv presentera en möjlig lösning :-) 

Det frågas efter en snabbare lösning. Då måste jag få veta snabbare än vad.

Affe Jkpg 6630
Postad: 2 feb 2019 13:01
Laguna skrev:
Affe Jkpg skrev:
Laguna skrev:

Modulo låter bra, men jag vet inte exakt hur du gör. Kan du skriva lite kod (eller pseudokod) här? Eller visa hur det blir med t.ex. 50 stjärnor.

 Laguna, uppgiften är väl presenterad som en "kluring", så att du ska först själv presentera en möjlig lösning :-) 

Det frågas efter en snabbare lösning. Då måste jag få veta snabbare än vad.

 Ta den snabbaste du har ;-)

Laguna Online 28529
Postad: 2 feb 2019 15:33

Snabbare än att plocka fram alla primtalsfaktorer kan det inte gå. För att kolla om de två första raderna (a,a) eller (a,a-1) fungerar så behövs bara ett par modulo-operationer.

För stora tal är det nog snabbare att ta reda på primfaktorerna och sedan generera de sammansatta faktorerna i stället för att prova alla, men om det är mer än en konstant faktor snabbare vet jag inte.

dajamanté 5139 – Fd. Medlem
Postad: 2 feb 2019 17:34 Redigerad: 2 feb 2019 17:40

Efter folkets förfrågan här kommer koden !!

Jag tänkte såhär: dem frågar oss att skriva ut alla möjliga kombinationer av rad med nn, följd av n-1n-1 (och inte tvärtom!!).

Så jag kollade om antal tjärnor modulo  n+n-1n + n-1 aka 2n-12n-1 blir lika med nn eller noll, dvs den första raden. Isf, skriva ut kombinationen.

I slutet plussar jag på första raden. 

Antal repetitioner går till medelvärde. 

Men som sagt problemssvårighetsgrad är mycket låg så det måste finnas en mycket smidigare sätt.

 

Edit: jag tror inte det har med primtalfaktorer att göra. Med 50 tjärnor får vi följande kombinationer:

50:
2,1
2,2
3,2
5,4
5,5
6,5
10,10
13,12
17,16
25,25

Alltså det räcker med att den första rad har en tjärna mer än den andra.

Affe Jkpg 6630
Postad: 3 feb 2019 12:41

Ja, det var ju elegant kodat :-)

Varför behöver du använda Integer.max() och Integer.min()?

Det gäller väl alltid att firstRow => secondRow?

Vid god programmerings-sed samlar man alla deklarationer först i en funktion.

Laguna Online 28529
Postad: 3 feb 2019 12:48

Om talet t.ex. är 49 eller 221 så är det just primfaktorerna du måste hitta för det finns inga andra.

Laguna Online 28529
Postad: 3 feb 2019 12:49
Affe Jkpg skrev:

 

Vid god programmerings-sed samlar man alla deklarationer först i en funktion.

En del programmeringsspråk har infört möjligheten att ha deklarationer var som helst just för att man ska slippa skriva alla deklarationer först.

dajamanté 5139 – Fd. Medlem
Postad: 3 feb 2019 14:37 Redigerad: 3 feb 2019 14:40
Affe Jkpg skrev:

Ja, det var ju elegant kodat :-)

Varför behöver du använda Integer.max() och Integer.min()?

Det gäller väl alltid att firstRow => secondRow?

Vid god programmerings-sed samlar man alla deklarationer först i en funktion.

 Helt ärligt ibland fick jag fel tal på fel plats (... eller rätt tal på fel plats!). Så för att vara säkert har jag Integer.max:at min utskrift. Men jag ska testa om och återkommer.

edit: det stämde. firstRow är alltid större. Tack Affe!

 

Kan ni tänka er på något annat sätt?

Svara Avbryt
Close