©
serviceprofessionalgmbh
Der Rechner gibt eine drei- bis 9-stellige Zahl vor (wenn keine Angaben erfolgen, eine 4-stellige), welche der Spieler erraten
muss. Der Spieler tippt seinen Lösungsversuch ein. Der Rechner antwortet, wie viele Ziffern an der richtigen Position
stehen (Ausgabe durch entsprechend viele "x") und wie viele Ziffern zwar dabei sind, aber an der falschen Stelle stehen (Ausgabe
durch entsprechend viele "o").
Ein xxo würde bedeuten: 3 Ziffern sind richtig, zwei davon stehen an der richtigen Stelle.
/* REXX
*/
arg anz
if anz < 3 ! anz > 9 then anz = 4
do forever
v=0;zahl0="";ro=0;rz=0
do anz /* random() kann 999999999 nicht liefert, deshalb byteweise */
zahl0=zahl0 !! random(0,9)
end
do until v >= 10 ! zahl2 = zahl0
zahl1=zahl0
hinweis=copies("x",ro) !! copies("o",rz)
hinweis=left(hinweis,anz,"-")
say hinweis v+1'. Eingabe:'
parse upper external zahl2
do while datatype(zahl2) = char ! zahl2 > copies("9",length(zahl0))
say 'Eingabe liegt nicht im erlaubten Bereich, wiederholen:'
parse external zahl2
end
zahl2=right(zahl2,length(zahl0),0)
v=v+1
ro=0
rz=0
if zahl1=zahl2 then do /* richtig */
select
when v < 2 then e = 'Zufallstreffer'
when v < 3 then e = 'Spitzenklasse'
when v < 5 then e = 'Super'
when v < 8 then e = 'Gut'
otherwise e = 'Koennte besser sein'
end
say e '- im' v'. Versuch. Gratulation, Sie haben gewonnen'
end
else do /* falsch */
do x=1 to length(zahl1)
if substr(zahl2,x,1) = substr(zahl1,x,1) then do
ro=ro+1
zahl1=overlay('a',zahl1,x,1)
zahl2=overlay('b',zahl2,x,1)
end
end
do x=1 to length(zahl1)
do y=1 to length(zahl1)
if substr(zahl1,x,1)=substr(zahl2,y,1) then do
zahl1=overlay('a',zahl1,x,1)
zahl2=overlay('b',zahl2,y,1)
rz=rz+1
end
end
end
if v > 9 then say 'Hirni - erst denken dann eingeben'
end
end
ant=''
do while ant ^= 'J' & ant ^= 'N'
say 'Ein neues Spiel (J/N):'
pull ant
end
if ant = 'N' then leave
end
exit
zurück zu Fun & More