Seite 2 von 3
Re: zahl die auf 5 endet überspringe
Verfasst: Samstag 7. Januar 2012, 18:31
von sma
Leonidas hat geschrieben:Also ich habe ja erwartet, dass man die Zahl in einen String in Binär umwandelt und dann auf "101$" matcht....

Schreib ich, schreib ich's nicht...? Ach, verdammt: Das funktioniert natürlich nicht. Ich sage nur bin(25).
Stefan
Re: zahl die auf 5 endet überspringe
Verfasst: Samstag 7. Januar 2012, 19:26
von /me
sma hat geschrieben:Leonidas hat geschrieben:Also ich habe ja erwartet, dass man die Zahl in einen String in Binär umwandelt und dann auf "101$" matcht....

Schreib ich, schreib ich's nicht...? Ach, verdammt: Das funktioniert natürlich nicht. Ich sage nur bin(25).
Dann muss man doch einen einfacheren Ansatz wählen, nämlich eine Primfaktorzerlegung. Die Primfaktoren sammelt man in einer Liste, sortiert sie aufsteigend und wenn das dritte Element 5 ist, dann ist man schon fast fertig.
Re: zahl die auf 5 endet überspringe
Verfasst: Samstag 7. Januar 2012, 19:31
von Dobi
auf ein Canvas malen, letzte Ziffer ausschneiden und in ein neuronales Netz werfen, das auf Nullen und Fünfen trainiert ist

Re: zahl die auf 5 endet überspringe
Verfasst: Samstag 7. Januar 2012, 19:55
von bb1898
/me hat geschrieben:
Dann muss man doch einen einfacheren Ansatz wählen, nämlich eine Primfaktorzerlegung. Die Primfaktoren sammelt man in einer Liste, sortiert sie aufsteigend und wenn das dritte Element 5 ist, dann ist man schon fast fertig.
Wenn das dritte Element 5 ist, endet die Zahl auf 0. Und wenn gleich das erste Element 5 ist? Immer vorausgesetzt, Du sammelst die _verschiedenen_ Primfaktoren in einer Liste, sonst wird's entweder unübersichtlich oder langweilig.
Re: zahl die auf 5 endet überspringe
Verfasst: Samstag 7. Januar 2012, 23:30
von sma
/me hat geschrieben:sma hat geschrieben:Leonidas hat geschrieben:Also ich habe ja erwartet, dass man die Zahl in einen String in Binär umwandelt und dann auf "101$" matcht....

Schreib ich, schreib ich's nicht...? Ach, verdammt: Das funktioniert natürlich nicht. Ich sage nur bin(25).
Dann muss man doch einen einfacheren Ansatz wählen, nämlich eine Primfaktorzerlegung. Die Primfaktoren sammelt man in einer Liste, sortiert sie aufsteigend und wenn das dritte Element 5 ist, dann ist man schon fast fertig.
15 zerlegt sich in 3 * 5 und einen IndexError...?
Oder 135, was 3 * 3 * 3 * 5 ist und wo da an dritter Stelle eine 3 steht. Du willst ja in einer *Liste* sammeln, keinem Set.
Stefan
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 05:17
von Leonidas
Geben wir auf, das Problem ist zu schwer für uns.
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 11:49
von BlackJack
Also mein C64 schafft das. In Forth:
Code: Alles auswählen
\ Skip numbers ending in 5 bj
: divisible? ( n m -- t/f )
mod 0= ;
: main ( -- )
20 1 do
i 5 divisible? not
i 10 divisible?
or if i . then
loop ;
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 13:07
von Hyperion
Jetzt wollte ich mal schnell in COMMODORE BASIC V2 punkten und nun klappt das nicht:
Code: Alles auswählen
10 for i=1 to 20:if right$(str$(i),1)<>"5" then print i:next
@BlackJack: Kannst Du mir erklären, wieso das nach den Zahlen 1-4 abbricht? Klappen String-Vergleiche in BASIC nicht?
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 14:16
von BlackJack
@Hyperion: Der Zeichenkettenvergleich ist nicht das Problem, sondern dass sich das ``THEN`` auf den Rest der Zeile bezieht. Das ``NEXT`` wird also bei 5 nicht mehr ausgeführt und es geht in der nächsten Zeile weiter. Die gibt es nicht → Programmende.
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 14:25
von Hyperion
BlackJack hat geschrieben:@Hyperion: Der Zeichenkettenvergleich ist nicht das Problem, sondern dass sich das ``THEN`` auf den Rest der Zeile bezieht. Das ``NEXT`` wird also bei 5 nicht mehr ausgeführt und es geht in der nächsten Zeile weiter. Die gibt es nicht → Programmende.
Ah... danke. Früher hätte ich das gewusst.
Also hier kurz die funktionierende Version:
Code: Alles auswählen
10 for i=1 to 20:if right$(str$(i),1)<>"5" then print i
20 next
(Welcher Basic-Dialekt klappte hier ganz gut für das Syntax-Highlighting? Vergesse ich immer wieder)
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 14:41
von nomnom
Hyperion hat geschrieben:(Welcher Basic-Dialekt klappte hier ganz gut für das Syntax-Highlighting? Vergesse ich immer wieder)
BlitzBasic und FreeBasic, denke ich. Das Forum benutzt doch GeSHi?
Edit: Und QBasic/QuickBasic und sdlBasic.
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 14:50
von Hyperion
nomnom hat geschrieben:BlitzBasic und FreeBasic, denke ich. Das Forum benutzt doch GeSHi?
Edit: Und QBasic/QuickBasic und sdlBasic.
"locobasic" wars

Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 14:52
von BlackJack
@Hyperion: Ich nehme immer ``locobasic`` bei GeSHi, denn das ist auch so ein „altes” BASIC aus der 8-Bit-Ära; Locomotive BASIC vom
Amstrad CPC. Die Syntaxhervorhebung für moderne BASICs funkioniert bei diesen alten Dialekten nicht immer so gut.
Edit: Mist, zu langsam.

Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 14:55
von Hyperion
BlackJack hat geschrieben:
Edit: Mist, zu langsam.

Hehe... hatte nen
alten Beitrag von Dir gesucht, gefunden und per "Edit" reingeguckt. War auch in so nem "problemthread"

(Artikel 5 GG wird da aufgeführt... herrlich!)
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 15:20
von BlackJack
Ich glaube einen Ansatz, der nur mit einer Modulo-Operation aus kommt, hatten wir noch nicht (in Pascal dieses mal):
Code: Alles auswählen
Program Skip5;
Var i : Byte;
Begin
For i := 1 To 19 Do If i MOD 10 <> 5 Then WriteLn(i);
End.
Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 15:31
von Hyperion
Ich hätte da auch noch was:
Code: Alles auswählen
In [12]: from itertools import cycle
In [38]: cycler = cycle((1, 1, 1, 1, 2, 1, 1, 1, 1))
In [39]: c = 0
In [40]: while c < 20:
c += cycler.next()
print c,
....:
....:
1 2 3 4 6 7 8 9 10 11 12 13 14 16 17 18 19 20

Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 16:18
von nomnom
BlackJack hat geschrieben:Ich glaube einen Ansatz, der nur mit einer Modulo-Operation aus kommt, hatten wir noch nicht
nomnom hat geschrieben:Code: Alles auswählen
>>> for i in range(1, 21):
... if i % 10 != 5:
... print i
...

Re: zahl die auf 5 endet überspringe
Verfasst: Sonntag 8. Januar 2012, 16:21
von BlackJack
@nomnom: Ach verdammt, da hatte ich nicht aufgepasst.

Re: zahl die auf 5 endet überspringe
Verfasst: Donnerstag 12. Januar 2012, 10:52
von korkak
nur um das mal als programmierneuling zu verstehen, die beste lösung(oder am verständlichsten für einen anfänger

) kam doch jetzt von /me mit "endswith" oder?
wenn ich das so laufen lasse wird doch alles mit einer 5 am ende ausgelassen so wie der TE es wollte:
Code: Alles auswählen
for i in range(1, 31):
if not str(i).endswith('5'):
print i
Re: zahl die auf 5 endet überspringe
Verfasst: Donnerstag 12. Januar 2012, 12:56
von EyDu
@korkak: Die meisten würden wohl nomnoms Lösung bevorzugen, da sie sehr intuitiv ist und ohne unnötige Konvertierungen auskommt: