Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Programmieren » Python Befehl gesucht (Knobel-Problemchen)
Autor
Schule Python Befehl gesucht (Knobel-Problemchen)
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3168
  Themenstart: 2023-03-20

Kleines Programmier KnobelProblemchen: Eingabe: Eine von 5 möglichen ungeraden Endziffer: Ausgabe: zwei andere ungerade Endziffern, und zwar genau die beiden Paare, die addiert eine Zahl mit derselben Endziffer ergeben, wie das Doppelte der gegebenen Zahl. Beispiel: Eingabe = 1, deren Doppeltes ist 2. Gesucht sind jetzt von den anderen beiden möglichen Paaren je eine Ziffer. Die einzig möglichen Paare sind: 9 u. 3, sowie 5 u. 7. Die möglichen Ausgaben wären (Er soll von jedem Paar nur eine Zahl angeben!): 1. [1,9,5] 2. [1,9,7] 3. [1,3,5] 4. [1,3,7] \sourceon Python \numberson from itertools import cycle def def_endziffer(x): num=0 num = x%10 return num zif1=0 zif2=0 nr=0 Eingabe=1 ez = cycle([1,3,5,7,9]) Ausgabe=[] Ausgabe.append(Eingabe) Doppeltes=def_endziffer(Eingabe+Eingabe) while len(Ausgabe)<4: zif1=next(ez) nr+=1 zif2=next(ez) print(nr,Doppeltes,zif1,zif2,"Su",zif1+zif2,next(ez),Ausgabe) if Doppeltes==def_endziffer(zif1+zif2): Ausgabe.append(zif2) if nr==20: break \sourceoff Ich habe dieses Programm zusammengeschustert, aber es hat das Problem, dass im Cycle die 5 Ziffern in fester Reihenfolge sind. Sie müssten durcheinander gewirbelt werden, dann käme noch die letzte Möglichkeit 9 und3 dazu. Gibt es so einen Befehl? Er soll aus der Menge der 5 Zahlen solange eine Randomzahl geben, bis die Paarung gefunden wird, die eine Summe mit Endzahl 2 hat, und deren Summanden aber noch nicht in Ausgabe enthalten sind.


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3281
  Beitrag No.1, eingetragen 2023-03-20

\sourceon Python \numberson def generate_pairs(remainder:int, base:int=10, summands:list[int]=[1,3,5,7,9]): return {(a,b) for a in summands for b in summands if a < b and (a+b) % base == remainder} def bekell_triples(remainder:int, base:int=10, summands:list[int]=[1,3,5,7,9]): pairs = generate_pairs(remainder, base, summands) pairs_of_pairs = [(p1, p2) for p1 in pairs for p2 in pairs if p1 < p2] return [[(remainder, a, b) for a in p1 for b in p2] for p1,p2 in pairs_of_pairs] print("Bekellian Arbitrary Solution:") for cipher in [0,2,4,6,8]: print(bekell_triples(cipher)) print("General Decimal Solution:") for cipher in range(10): print(bekell_triples(cipher,10,list(range(10)))) \sourceoff Bekellian Arbitrary Solution: [[(0, 1, 3), (0, 1, 7), (0, 9, 3), (0, 9, 7)]] [[(2, 3, 5), (2, 3, 7), (2, 9, 5), (2, 9, 7)]] [[(4, 1, 5), (4, 1, 9), (4, 3, 5), (4, 3, 9)]] [[(6, 1, 7), (6, 1, 9), (6, 5, 7), (6, 5, 9)]] [[(8, 1, 3), (8, 1, 5), (8, 7, 3), (8, 7, 5)]] General Decimal Solution: [[(0, 3, 4), (0, 3, 6), (0, 7, 4), (0, 7, 6)], [(0, 1, 3), (0, 1, 7), (0, 9, 3), (0, 9, 7)], [(0, 1, 4), (0, 1, 6), (0, 9, 4), (0, 9, 6)], [(0, 1, 2), (0, 1, 8), (0, 9, 2), (0, 9, 8)], [(0, 2, 3), (0, 2, 7), (0, 8, 3), (0, 8, 7)], [(0, 2, 4), (0, 2, 6), (0, 8, 4), (0, 8, 6)]] [[(1, 0, 3), (1, 0, 8), (1, 1, 3), (1, 1, 8)], [(1, 0, 2), (1, 0, 9), (1, 1, 2), (1, 1, 9)], [(1, 0, 5), (1, 0, 6), (1, 1, 5), (1, 1, 6)], [(1, 0, 4), (1, 0, 7), (1, 1, 4), (1, 1, 7)], [(1, 3, 5), (1, 3, 6), (1, 8, 5), (1, 8, 6)], [(1, 3, 4), (1, 3, 7), (1, 8, 4), (1, 8, 7)], [(1, 2, 3), (1, 2, 8), (1, 9, 3), (1, 9, 8)], [(1, 2, 5), (1, 2, 6), (1, 9, 5), (1, 9, 6)], [(1, 2, 4), (1, 2, 7), (1, 9, 4), (1, 9, 7)], [(1, 4, 5), (1, 4, 6), (1, 7, 5), (1, 7, 6)]] [[(2, 0, 5), (2, 0, 7), (2, 2, 5), (2, 2, 7)], [(2, 0, 3), (2, 0, 9), (2, 2, 3), (2, 2, 9)], [(2, 0, 4), (2, 0, 8), (2, 2, 4), (2, 2, 8)], [(2, 3, 5), (2, 3, 7), (2, 9, 5), (2, 9, 7)], [(2, 3, 4), (2, 3, 8), (2, 9, 4), (2, 9, 8)], [(2, 4, 5), (2, 4, 7), (2, 8, 5), (2, 8, 7)]] [[(3, 1, 5), (3, 1, 8), (3, 2, 5), (3, 2, 8)], [(3, 1, 4), (3, 1, 9), (3, 2, 4), (3, 2, 9)], [(3, 1, 6), (3, 1, 7), (3, 2, 6), (3, 2, 7)], [(3, 5, 6), (3, 5, 7), (3, 8, 6), (3, 8, 7)], [(3, 4, 5), (3, 4, 8), (3, 9, 5), (3, 9, 8)], [(3, 4, 6), (3, 4, 7), (3, 9, 6), (3, 9, 7)], [(3, 0, 1), (3, 0, 2), (3, 3, 1), (3, 3, 2)], [(3, 0, 5), (3, 0, 8), (3, 3, 5), (3, 3, 8)], [(3, 0, 4), (3, 0, 9), (3, 3, 4), (3, 3, 9)], [(3, 0, 6), (3, 0, 7), (3, 3, 6), (3, 3, 7)]] [[(4, 1, 6), (4, 1, 8), (4, 3, 6), (4, 3, 8)], [(4, 1, 5), (4, 1, 9), (4, 3, 5), (4, 3, 9)], [(4, 5, 6), (4, 5, 8), (4, 9, 6), (4, 9, 8)], [(4, 0, 1), (4, 0, 3), (4, 4, 1), (4, 4, 3)], [(4, 0, 6), (4, 0, 8), (4, 4, 6), (4, 4, 8)], [(4, 0, 5), (4, 0, 9), (4, 4, 5), (4, 4, 9)]] [[(5, 1, 2), (5, 1, 3), (5, 4, 2), (5, 4, 3)], [(5, 1, 6), (5, 1, 9), (5, 4, 6), (5, 4, 9)], [(5, 1, 7), (5, 1, 8), (5, 4, 7), (5, 4, 8)], [(5, 2, 6), (5, 2, 9), (5, 3, 6), (5, 3, 9)], [(5, 2, 7), (5, 2, 8), (5, 3, 7), (5, 3, 8)], [(5, 0, 1), (5, 0, 4), (5, 5, 1), (5, 5, 4)], [(5, 0, 2), (5, 0, 3), (5, 5, 2), (5, 5, 3)], [(5, 0, 6), (5, 0, 9), (5, 5, 6), (5, 5, 9)], [(5, 0, 7), (5, 0, 8), (5, 5, 7), (5, 5, 8)], [(5, 6, 7), (5, 6, 8), (5, 9, 7), (5, 9, 8)]] [[(6, 1, 7), (6, 1, 9), (6, 5, 7), (6, 5, 9)], [(6, 1, 2), (6, 1, 4), (6, 5, 2), (6, 5, 4)], [(6, 2, 7), (6, 2, 9), (6, 4, 7), (6, 4, 9)], [(6, 0, 7), (6, 0, 9), (6, 6, 7), (6, 6, 9)], [(6, 0, 1), (6, 0, 5), (6, 6, 1), (6, 6, 5)], [(6, 0, 2), (6, 0, 4), (6, 6, 2), (6, 6, 4)]] [[(7, 0, 3), (7, 0, 4), (7, 7, 3), (7, 7, 4)], [(7, 0, 8), (7, 0, 9), (7, 7, 8), (7, 7, 9)], [(7, 0, 1), (7, 0, 6), (7, 7, 1), (7, 7, 6)], [(7, 0, 2), (7, 0, 5), (7, 7, 2), (7, 7, 5)], [(7, 3, 8), (7, 3, 9), (7, 4, 8), (7, 4, 9)], [(7, 1, 3), (7, 1, 4), (7, 6, 3), (7, 6, 4)], [(7, 1, 8), (7, 1, 9), (7, 6, 8), (7, 6, 9)], [(7, 1, 2), (7, 1, 5), (7, 6, 2), (7, 6, 5)], [(7, 2, 3), (7, 2, 4), (7, 5, 3), (7, 5, 4)], [(7, 2, 8), (7, 2, 9), (7, 5, 8), (7, 5, 9)]] [[(8, 0, 2), (8, 0, 6), (8, 8, 2), (8, 8, 6)], [(8, 0, 3), (8, 0, 5), (8, 8, 3), (8, 8, 5)], [(8, 0, 1), (8, 0, 7), (8, 8, 1), (8, 8, 7)], [(8, 2, 3), (8, 2, 5), (8, 6, 3), (8, 6, 5)], [(8, 1, 2), (8, 1, 6), (8, 7, 2), (8, 7, 6)], [(8, 1, 3), (8, 1, 5), (8, 7, 3), (8, 7, 5)]] [[(9, 2, 4), (9, 2, 5), (9, 7, 4), (9, 7, 5)], [(9, 2, 3), (9, 2, 6), (9, 7, 3), (9, 7, 6)], [(9, 1, 2), (9, 1, 7), (9, 8, 2), (9, 8, 7)], [(9, 1, 4), (9, 1, 5), (9, 8, 4), (9, 8, 5)], [(9, 1, 3), (9, 1, 6), (9, 8, 3), (9, 8, 6)], [(9, 0, 2), (9, 0, 7), (9, 9, 2), (9, 9, 7)], [(9, 0, 1), (9, 0, 8), (9, 9, 1), (9, 9, 8)], [(9, 0, 4), (9, 0, 5), (9, 9, 4), (9, 9, 5)], [(9, 0, 3), (9, 0, 6), (9, 9, 3), (9, 9, 6)], [(9, 3, 4), (9, 3, 5), (9, 6, 4), (9, 6, 5)]]


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3168
  Beitrag No.2, vom Themenstarter, eingetragen 2023-03-20

Danke Einfältiger, Deine Lösung gibt aber gerade Zahlen an der 1. Stelle aus. Ich habe zwischendurch das Problem damit gelöst: \sourceon Python \numberson from random import * zif1=zif2=nr=z=0 Eingabe=1 Ausgabe=[1] def endziffer(x): num=0 num = x%10 return num def zufall(x): z=randint(0, 10) if z%2==0: z=z+1 if z>10: z=z-10 return z Doppeltes=endziffer(Eingabe+Eingabe) while len(Ausgabe)<4: zif1=zufall(1) zif2=zufall(1) if Doppeltes==endziffer(zif1+zif2) and zif1 not in Ausgabe and zif2 not in Ausgabe: Ausgabe.append(zif2) if len(Ausgabe)==3: print("Ausgabe",Ausgabe) break \sourceoff Trotzdem vielen Dank. Mir fiel auf: Dein Programm ist umfangreicher als meines???


   Profil
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]