2009-04-22, 18:09
  #1
Medlem
War Skeletons avatar
Jag har testat två saker som har funkat med lägre tal:

Kod:
def isCube(x):
    if x**(1.0/3) % 1 == 0:
        return 1
    return 0

print isCube(27) #blir true
print isCube(28) #blir false
raw_input('')

och:

Kod:
def isCube(x):
    if x**(1.0/3) == int(x**(1.0/3)):
        return 1
    return 0

print isCube(27) #blir true
print isCube(28) #blir false
raw_input('')

Det är bara det att om jag matar in ett lite högre tal, t.ex. 1000, som är 10^3, så visar den false.

Det kan bero på att det blir något avrundningserror, eftersom att int(1000**(1.0/3)) returnerar 9.

Finns det något annat sätt att kolla om ett tal innehåller decimaler?
Citera
2009-04-22, 18:24
  #2
Medlem
War Skeletons avatar
Skapade en fullösning som verkar funka, men det måste finnas ett bättre sätt.

Kod:
def isCube(x):
    for i in range(int(x**(1.0/3))-1, int(x**(1.0/3))+2):
        if i**3 == x:
            return 1
    return 0
Citera
2009-04-22, 18:28
  #3
Medlem
Y0dAs avatar
Nu har jag ingen koll på Python, men en variant för att inte få lika mycket problem med precisionen skulle kunna vara att att byta ut villkoret i if-satsen mot
round(x**(1.0/3))**3 == x
det borde fungera bättre.
Citera
2009-04-22, 18:34
  #4
Medlem
War Skeletons avatar
Jo, givetvis, varför tänkte jag inte på det? -.-

Tack så mycket.

Satt inte du på project euler för ett par år sedan?
Citera
2009-04-22, 19:00
  #5
Medlem
Y0dAs avatar
Citat:
Ursprungligen postat av War Skeleton
Jo, givetvis, varför tänkte jag inte på det? -.-

Tack så mycket.

Satt inte du på project euler för ett par år sedan?
Jodå, kör fortfarande, men jag lägger inte ner några större ansträngningar för att försöka lösa så många problem som möjligt och hamna högt upp på rankingen längre. Har även bidragit med ett av de lurigare problemen på siten.
Citera
2009-04-22, 19:10
  #6
Medlem
War Skeletons avatar
Citat:
Ursprungligen postat av Y0dA
Jodå, kör fortfarande, men jag lägger inte ner några större ansträngningar för att försöka lösa så många problem som möjligt och hamna högt upp på rankingen längre. Har även bidragit med ett av de lurigare problemen på siten.

Där ser man
Vilket då?
Citera
2009-04-22, 19:18
  #7
Medlem
Y0dAs avatar
Citat:
Ursprungligen postat av War Skeleton
Där ser man
Vilket då?
Det med Ulam-talen.
Citera
2009-04-22, 19:30
  #8
Medlem
War Skeletons avatar
Citat:
Ursprungligen postat av Y0dA
Det med Ulam-talen.

Heh, den verkar inte vara för lätt iaf
Citera
2009-04-22, 19:30
  #9
Medlem
War Skeletons avatar
Citat:
Ursprungligen postat av Y0dA
Det med Ulam-talen.

Heh, den verkar inte vara för lätt iaf
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in