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?
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 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 :-)
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.
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 ;-)
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.
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 , följd av (och inte tvärtom!!).
Så jag kollade om antal tjärnor modulo aka blir lika med 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.
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.
Om talet t.ex. är 49 eller 221 så är det just primfaktorerna du måste hitta för det finns inga andra.
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.
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?