Redstone ist ein Material im Spiel Minecraft und wird für viele komplexe Erfindungen verwendet. Für dieses Programm müssen Sie nur drei Elemente simulieren: den Redstone-Draht (mit R gekennzeichnet), den Redstone-Brenner (mit T gekennzeichnet) und den Block (mit B gekennzeichnet).
Hier ist eine Liste der Grundregeln für die Funktionsweise von Redstone:
A redstone torch sends power to any adjacent redstone wire.
TRRRR
^This redstone wire is powered.
Redstone wire can only hold power for 15 blocks.
TRRRRRRRRRRRRRRRR
^This last wire is unpowered, because the torch is >15 blocks away.
A block is said to be powered if a powered redstone wire is found adjacent to it.
TRRRB
^This block is powered.
If a block next to a redstone torch is powered, then the torch stops emitting power.
T
R
R
R
B <This block is powered.
T <This redstone torch does not emit power because of the block next to it.
R <This redstone is unpowered because the torch is not providing power.
R
Die Eingabe erfolgt in zweidimensionalen Arrays bis zu einer Größe von 64 x 64 wie folgt:
TRRR
B
TBRTRR
R
RRRRRRRRR
R
RRRRRR
Es ist garantiert, dass der Eingang keine "Uhren" oder roten Steine hat, die von einer Taschenlampe angetrieben werden, die auf den Block zeigt, auf dem die Taschenlampe läuft. In jedem Eingang befindet sich nur ein Redstone-Kreis.
Ihr Programm muss jedes Zeichen auf eine 1 oder eine 0 ändern, wobei 1 angibt, ob dieser Gegenstand mit Strom versorgt wird / Leistung abgibt, und eine 0, wenn er nicht mit Strom versorgt wird / Leistung abgibt.
Dieser Eingang sollte diesen Ausgang haben:
1111
1
100000
1
111111111
1
001111
Dies ist ein Code-Golf, also gewinnt der kürzeste Code wie immer.
quelle
"TRR\nB B\nRRT"
?111\n0 1\n000
ist die Ausgabe; es scheint in den Regeln solide zu sein. Ich werde eine Eingabebeschränkung setzen, die besagt, dass Sie keine Situationen haben könnenTRR B R RRR
, in denen es wiederholt blinkt.Antworten:
Haskell, 400
map(map h.transpose).transpose.(\l->[g l|g<-id:f(map(const ' ')$head l)++map map (f ' ')])
Ersetzt jede Kachel durch eine Liste von sich selbst, gefolgt von ihren vier Nachbarn, und ordnet diese dann durch h zu. h sagt für jedes Plättchen, wie es auf Nachbarn reagiert: Fackeln schalten sich aus ('T' statt 't'), wenn sich ein Stromblock ('b') in der Nähe befindet, Drähte ('d' für tot durch 's') kopieren fehlerhaft ihr leistungsstärkster Nachbar (obwohl er nicht schlimmer als tot sein kann) usw.iterate
Wiederholt diesen Schritt,(!!(64^2+16))
löscht eine Iteration, bei der azyklische Schaltungen konvergiert werden, und ich habe es total so geschrieben, um eine intuitive Grenze zu geben, nicht um bei 400 zu landen.quelle
Python, 699
Dies ist nur ein kurzer Pass (momentan ist die Zeit abgelaufen). Es kann wahrscheinlich viel mehr Golfspielen gebrauchen.
quelle
f=set
und erstellenl=lambda x:zip(x,[0]*len(x))
. Du wärst immer noch über 700 Zeichen. Außerdem haben Sie einen nutzlosen Platz bei hinterlassen... or not (a,z)in o
.f=set
würde ein paar Zeichen rasieren, und Sie haben einen anderen nutzlosen Charakter @not (a,z)in o
Python 2, 556 Bytes
Sehen Sie es in Aktion
print()
quelle
input()
und verwendenprint
. Auchstr(int(bool(j[1:]!=u)))
ist das gleiche wie`int(j[1:]!=u)`
.str(
, aber guten Punkt dazubool(
.`x`
(mit Backticks, es ist ein Alias fürrepr
) ist dasselbe wiestr(x)
(zumindest für kleine ganze Zahlen. Es ist für bestimmte Objekte, Longs, Generatoren usw. unterschiedlich). Ein weiterer Golf:if g!=0
ist das gleiche wieif g
. Sie können auch habenk=lambda h,l,z:max(...
print ''
? Könnte es seinprint''
?