Seite 2 von 2
Verfasst: Mittwoch 10. Juni 2009, 19:11
von EyDu
Mir war nur nicht klar, ob du meinen Edit noch gelesen hattest. (ich wollte doch nur Aufmerksamkeit!

)
Ich schlage für Version 2.0, nee, nennen wir sie besser gleich 5.0, einen klassenbasierten Entwurf vor. In ordentlichen Sprachen wie Java wird dies schließlich auch gemacht

Verfasst: Mittwoch 10. Juni 2009, 19:24
von derdon
EyDu hat geschrieben:Ich schlage für Version 2.0, nee, nennen wir sie besser gleich 5.0, einen klassenbasierten Entwurf vor. In ordentlichen Sprachen wie Java wird dies schließlich auch gemacht

Bitte sehr:
Code: Alles auswählen
>>> class MyStr(str):
... def __new__(cls, val):
... return str.__new__(cls, val)
... @property
... def contains_number_with_six_digits(self):
... for number in xrange(int(1e5), int(1e6)):
... if str(number) in self:
... return True
... return False
...
>>> foo = MyStr('ein string, in dem eine sechstellige zahl vorkommt: 123456 und noch ein paar woerter')
>>> foo.contains_number_with_six_digits
True
>>> foo = MyStr('ein string, in dem eine sechstellige zahl vorkommt: 1234 und noch ein paar woerter 56')
>>> foo.contains_number_with_six_digits
False
Verfasst: Mittwoch 10. Juni 2009, 19:55
von Leonidas
Da muss noch eine abstrakte Klasse NumberChecker, die das Check-Interface implementiert rein, mit einer konkreten Klasse Number6Checker, das dann eine ``check()``-Methode hat, die ein boolean-Objekt zurückgibt.
Verfasst: Mittwoch 10. Juni 2009, 20:19
von numerix
Und für den Fall, dass der OP in Wahrheit gar keine "Zahl", sondern eine "Nummer" meint, die vielleicht ja mit einer 0 beginnt, dann funktioniert die "xrange(1e...)"-Variante immer noch nicht ...
Ich hätte da noch:
Code: Alles auswählen
>>> s = 'ein string, in dem eine sechstellige zahl vorkommt: 023456 und noch ein paar woerter'
>>> any(set(s.split()).intersection((str(n).zfill(6) for n in xrange(10**6))))
True
Verfasst: Mittwoch 10. Juni 2009, 20:51
von Panke
Und wenn der OP vielleicht auch Zahlen in Worten meint?
"Einemillionensechshundertzweiundfuffzigtausendfumpfunfuffzig" findest du so nicht.
Verfasst: Mittwoch 10. Juni 2009, 20:55
von numerix
Panke hat geschrieben:Und wenn der OP vielleicht auch Zahlen in Worten meint?
"Einemillionensechshundertzweiundfuffzigtausendfumpfunfuffzig" findest du so nicht.
Natürlich nicht, weil die Zahl 7-stellig ist!

Verfasst: Mittwoch 10. Juni 2009, 23:27
von BlackJack
@numerix: Wieso ist die siebenstellig? Wurde denn schon etwas zur Basis gesagt, in der die Zahl dargestellt wird!?

Verfasst: Donnerstag 11. Juni 2009, 07:18
von numerix
BlackJack hat geschrieben:@numerix: Wieso ist die siebenstellig? Wurde denn schon etwas zur Basis gesagt, in der die Zahl dargestellt wird!?

Ich habe gelernt, dass man bei Basen != 10 die Zahlen nur als Ziffernfolge benennt, so dass durch die Formulierung wie "Eine Million etc." die Basis festgelegt wäre.
Oder sagst du zu einem binären 10010101 "Zehn Millionen Zehntausend Einhundertundeins"?
Verfasst: Donnerstag 11. Juni 2009, 07:45
von BlackJack
Nee da sag ich 149 zu, oder Hundertneunundvierzig.
Verfasst: Donnerstag 11. Juni 2009, 08:58
von Dill
Es wird immer deutlicher, dass das problem massiv unterschätzt wurde.
Wir haben auch das 9liver-system außer acht gelassen:
Code: Alles auswählen
"Gib acht! Hundert Dreiräder kommen auf dich zu!"
^ ^ ^ ^
8 1 100 3
= 811003