dajamanté är nöjd med hjälpen!
dajamanté 5228
Postad: 2 feb 2019

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 4372
Postad: 2 feb 2019

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 4269
Postad: 2 feb 2019
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 4372
Postad: 2 feb 2019
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 4269
Postad: 2 feb 2019
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 4372
Postad: 2 feb 2019

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é 5228
Postad: 2 feb 2019 Redigerad: 2 feb 2019

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 4269
Postad: 3 feb 2019

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 4372
Postad: 3 feb 2019

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

Laguna 4372
Postad: 3 feb 2019
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é 5228
Postad: 3 feb 2019 Redigerad: 3 feb 2019
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