Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zahlen und Wörter...

0 views
Skip to first unread message

Thomas Lehmann

unread,
Dec 20, 2009, 12:54:34 PM12/20/09
to
Hallo!

Folgendes Problem:

Zwei Listen. Die erste Liste enthält Zahlen und die zweite Liste
enthält Wörter.
Es gilt: Jede Zahl hat gleich viele Ziffern ebenso wie jedes Wort
gleich viel
Buchstaben hat analog zu der Anzahl der Ziffern. Die Listen können
unterschiedlich
lang sein.

Verwandte Zahlen sind solche, welche die gleichen Ziffern haben. Finde
alle Zahlen dieser
Art für die es auch Wörter gibt!

numbers = [ 1234, 1232, 1223 ]
words = [ "polo", "pool", "witz"]

Ergebnis: [1232, 1223] -> [ "polo", "pool"]

Verwandte Zahlen zu finden ist einfach nur tue ich mir schwer bei dem
Finden
der Wörter....

mblume

unread,
Dec 20, 2009, 1:26:51 PM12/20/09
to

>>> s1="pool"
>>> s2="polo"
>>> list(s1)
['p', 'o', 'o', 'l']

>>> l1=list(s1)
>>> l2=list(s2)
>>> l1.sort()
>>> l2.sort()

>>> l1
['l', 'o', 'o', 'p']
>>> l2
['l', 'o', 'o', 'p']


HTH
Martin

Christopher Arndt

unread,
Dec 21, 2009, 6:35:32 AM12/21/09
to
Thomas Lehmann schrieb:

> Verwandte Zahlen sind solche, welche die gleichen Ziffern haben. Finde
> alle Zahlen dieser
> Art für die es auch Wörter gibt!
>
> Verwandte Zahlen zu finden ist einfach nur tue ich mir schwer bei dem
> Finden der Wörter....

http://docs.python.org/library/stdtypes.html#set

Chris

Thomas Lehmann

unread,
Dec 23, 2009, 1:00:37 PM12/23/09
to
> http://docs.python.org/library/stdtypes.html#set
>
> Chris

Die Antworten sind gut gemeint führen aber in die falsche Richtung!
Der Nachfolgende Code führt zu folgender Ausgabe:

[[144, 441], [169, 196, 961], [256, 625]]

Natürlich habe ich auch den analogen Code für die Wörter.
Jetzt suche ich eine handliche Lösung um jede sub-liste
der Zahlen mit der sub-liste der Wörter abzugleichen.

[['EAT', 'TEA'], ['NOW', 'OWN'], ['ITS', 'SIT'], ['ACT', 'CAT'],
['DOG', 'GOD'], ['HOW', 'WHO']]

Es ist unschwer zu erkennen, daß 144 und 441 nicht mit EAT und TEA
zusammenpassen!
(warum? weil 441 ATE sein müßte)
Wie schreibt man nun die Funktion, die alle Zahlen liefert die zu den
Wörtern
passen?

def createSquares(digits):
data = []
low = 10**(digits-1)
high = 10**(digits )-1

rootLow = int(math.sqrt(low))
rootHigh = int(math.sqrt(high))
current = rootLow

if current**2 < low:
current += 1

while current <= rootHigh:
data.append(current**2)
current += 1
return data

def digitizer(number):
return map(int, "%d" % (number))

def numberizer(digits):
return int(("%s" % (digits))[1:-1].replace(",", "").replace(" ",
""))

def stringerizer(letters):
return (("%s" % (letters))[1:-1].replace(",", "").replace(" ",
"").replace("'", ""))

def filterSquares(squares):
groups = {}
for square in squares:
key = stringerizer(sorted(digitizer(square)))
if not key in groups: groups[key] = []
groups[key].append(square)

return [ k for k in groups.values() if len(k) >= 2 ]

print(filterSquares(createSquares(3)))

Martin v. Loewis

unread,
Dec 28, 2009, 9:39:57 AM12/28/09
to Thomas Lehmann
> [[144, 441], [169, 196, 961], [256, 625]]
>
> Nat�rlich habe ich auch den analogen Code f�r die W�rter.
> Jetzt suche ich eine handliche L�sung um jede sub-liste
> der Zahlen mit der sub-liste der W�rter abzugleichen.

>
> [['EAT', 'TEA'], ['NOW', 'OWN'], ['ITS', 'SIT'], ['ACT', 'CAT'],
> ['DOG', 'GOD'], ['HOW', 'WHO']]
>
> Es ist unschwer zu erkennen, da� 144 und 441 nicht mit EAT und TEA
> zusammenpassen!

Was genau ist denn "zusammenpassen"? Passen 144 und EAT �berhaupt
zusammen? EAT hat ja schlie�lich drei verschiedene Buchstaben, und
144 nur zwei verschiedene Ziffern.

> (warum? weil 441 ATE sein m��te)

Dann passen sie doch immernoch nicht zusammen!

Finde eine pr�zise Definition von "zusammenpassen", und dann hast
Du vermutlich auch schon das Programm. Die Definition k�nnte
von der Form sein:

Ein Wort und eine Zahl passen zusammen, wenn ...
Eine Gruppe von W�rtern passt mit einer Gruppe von Zahlen zusammen,
wenn je paarweise eine Zahl und ein Wort zusammenpasst und au�erdem
...

Ciao,
Martin

0 new messages