Deneb Skrevet 24. desember 2009 Del Skrevet 24. desember 2009 Hei! Driver med ProjectEuler problem 4, og trenger (tror jeg da) en funksjon/måte å konvertere flersifrede tall, feks 1881 til en vektor ala [1 8 8 1]. Noen som vet hvordan jeg gjør dette? (Må selvsagt skje automatisk med ethvert flersifret tall) Takk og god jul Lenke til kommentar
GeirGrusom Skrevet 24. desember 2009 Del Skrevet 24. desember 2009 siffer = verdi % 10 verdi = verdi / 10 Lenke til kommentar
steingrim Skrevet 25. desember 2009 Del Skrevet 25. desember 2009 Hei! Driver med ProjectEuler problem 4, og trenger (tror jeg da) en funksjon/måte å konvertere flersifrede tall, feks 1881 til en vektor ala [1 8 8 1]. Noen som vet hvordan jeg gjør dette? (Må selvsagt skje automatisk med ethvert flersifret tall) Takk og god jul Jeg sjekket akkurat min løsning for problem 4, og hvis du lurer på dette for å sjekke om tallet er et palindrom, så er antagelig den enkleste løsningen å konvertere tallet til en string og sjekke om string == string.baklengs() -- litt avhengig av hvilket språk du bruker selvsagt Lenke til kommentar
Deneb Skrevet 25. desember 2009 Forfatter Del Skrevet 25. desember 2009 Hvilket språk bruker du - og hvordan konverterer du tallet til en string der? Om det er innebygget funksjon så kan jeg muligens bruke help funksjonen, ellers kan jeg lære av metoden. Bruker matlab selv! Artig at det er flere som har kommet like langt(kort) som meg Lenke til kommentar
steingrim Skrevet 26. desember 2009 Del Skrevet 26. desember 2009 Jeg har brukt Python og har løst ca 50 problemer Lenge siden sist jeg tittet på Euler nå, kanskje jeg skal ta en oppgave eller to i løpet av dagen! Lenke til kommentar
snippsat Skrevet 26. desember 2009 Del Skrevet 26. desember 2009 (endret) Hvilket språk bruker du - og hvordan konverterer du tallet til en string der? Python er et glimrende språk,som du kan bruke i tillegg eller som erstatning for matlab. http://vnoel.wordpress.com/2008/05/03/bye-...on-thanks-sage/ http://cauchy.math.okstate.edu/~ullrich/PyPlug/ http://www.prescod.net/python/why.html Last ned 2.6.4,ikke python 3 ennå. http://www.python.org/download/releases/2.6.4/ Da kan jeg bare ta en rask innføring med basis i oppgaven. Start(IDLE) python shell,så er det bare og skrive inn. >>> x = 12345 >>> x 12345 >>> type(x) <type 'int'> >>> #lage string >>> s = str(x) >>> s '12345' >>> type(s) <type 'str'> >>> s[::-1] '54321' >>> #lager er funksjon som tester for palindrome >>> def is_palindrome(s): return s == s[::-1] >>> is_palindrome(s) False >>> is_palindrome('1881') True >>> s '12345' >>> #konvetere til list >>> l = [int(num) for num in str(s)] >>> l [1, 2, 3, 4, 5] >>> type(l) <type 'list'> >>> is_palindrome(l) False >>> lst = [1,8,8,1] >>> is_palindrome(lst) True >>> Endret 26. desember 2009 av SNIPPSAT Lenke til kommentar
Senyor de la guerra Skrevet 27. desember 2009 Del Skrevet 27. desember 2009 Vektor = []; tall = '1881'; % tall inn som string for i = 1:length(tall) Vektor(i) = str2num(tall(i)); end disp(Vektor) Lenke til kommentar
asicman Skrevet 8. januar 2010 Del Skrevet 8. januar 2010 en funksjon/måte å konvertere flersifrede tall, feks 1881 til en vektor ala [1 8 8 1]. Her er et forslag til Matlab kode for å sjekke om et tall er et palindrom. Det brukes ikke strenger. Jeg har skrevet det i gnu octave (mener å huske at fix heter trunc i Matlab): function res=palindrome(n) res = false; i = 1; d = ceil(log10(n)); v = zeros(d,1); while (n > 0) v(i,1) = rem(n,10); n = fix(n/10); i = i+1; end if flipud (v) == v res = true; end Lenke til kommentar
DeadManWalking Skrevet 8. januar 2010 Del Skrevet 8. januar 2010 (endret) Eller på en linje i haskell palindrome x = if x == reverse x then True else False Prolog: pal(X):-reverse(X,S1),S1=X. Endret 8. januar 2010 av Algific Lenke til kommentar
asicman Skrevet 9. januar 2010 Del Skrevet 9. januar 2010 Eller på en linje i haskell palindrome x = if x == reverse x then True else False Hvis det var en kommentar til min melding så tilsvarer det kun if statementet i Matlab koden. Jeg forstod det slik at trådstarter ønsket å konvertere et tall til en liste i Matlab. Hvis du skal gjøre det samme i Haskell kunne man gjøre noe som f.eks. numtolist n = if n < 10 then [n] else rem n 10 : numtolist (div n 10) palindrome x = if numtolist x == reverse (numtolist x) then True else False Det blir selvsagt mer kompakt når man bruker en rekursiv definisjon. Det samme i Lisp ville bli: (defun numtolist (n) (if (< n 10) (list n) (cons (rem n 10) (numtolist (truncate n 10))))) (defun palindrome (n) (equal (numtolist n) (reverse (numtolist n)))) Jeg kunne selvsagt ha skrevet begge funksjonene på en linje (eller begge ved bruk av labels), men det blir litt klarere slik. Det er tross alt ikke Perl. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå