Aussage
Sie erhalten ein Standbild einer Reihe von Kugeln, die in ein 2D-Raster fallen. Dieses Gitter ist von unveränderlichen und unzerbrechlichen Wänden umgeben, sodass die gesamte Aktion in ihnen enthalten ist. Ihre Aufgabe ist es, den Zustand des Szenarios zu bestimmen, nachdem die Schwerkraft alles getan hat, was sie bewirkt.
Elemente innerhalb des Rasters
-
Boden, ändert nicht die Richtung der fallenden Bälle.\
Rechter Schieber, ändert den Weg der Kugel um eine (1) Position nach rechts./
Linker Schieber, ändert den Weg des Balls um eine (1) Position nach links.o
Ein Ball.
Regeln
- Kugeln fallen.
- Fußböden und Rutschen fallen nicht .
- Wenn der Ball auf eine Rutsche trifft, die ihn durch eine Wand (
\#
oder#/
) oder durch einen Boden führen würde, fungiert die Rutsche als Boden. - Wenn ein Ball einen anderen Ball trifft, wird der zu einem Ball, aber seine Kraft erhöht sich auf die Summe beider Bälle.
- Neue Bälle (verbunden) verhalten sich weiterhin wie gewohnt.
- Wenn sich ein Ball nicht mehr bewegen kann, wird er durch seine Kraft ersetzt.
- Die Kraft eines Balls wird immer höchstens 9 betragen.
Eingang
Das Raster wird in einer Zeichenfolgenvariablen mit dem Namen angegeben, der in der Sprache Ihrer Wahl am kürzesten ist. Standardmäßig werden wir a
als Eingabe verwenden. Ein Beispiel einer Eingabe, genau wie erhalten:
##########\n# \ #\n#o #\n# - -\o #\n#/- \ #\n# \oo-/\#\n#-/ \ /#\n# \ \ #\n# /#\n##########
Für zufällige Gitter verwenden Sie https://repl.it/B1j3/2 . Verwende stattdessen meine generierte Seite (keine Werbung, kein Mist, nur die Eingabe und die Ausgabe)
Hinweis Zeilenumbrüche sind \n
. Das Drucken der Eingabe auf dem Bildschirm (für die Abfrage nicht erforderlich) würde Folgendes anzeigen. Obwohl ich vier Rätsel nebeneinander gestellt habe, um Platz zu sparen.
########## ########## ########## ##########
# \ # # o -/# # o# #-o / #
#o # # \ # # o -# #-- \ /\ #
# - -\o # #- \ # # - \o# # - -- o-#
#/- \ # # # #o /\ # #/ \ #
# \oo-/\# #o -o- # # / -o# #/ /o oo/#
#-/ \ /# # -/- # # - o -# #o/ #
# \ \ # # \\ # # \o /# #o-o o#
# /# # \o\ /\# # \o # # -\o o /#
########## ########## ########## ##########
Ausgabe
Das gleiche Raster, gedruckt auf dem Bildschirm mit dem Endergebnis der Ballkraft. Eine gültige Antwort wäre eines (1) der folgenden Rätsel. Jedes entspricht der Eingabe an derselben Position. Wenn die Eingabe unterschiedlich ist, sollten Sie die Ausgabe anpassen. Beschränken Sie sich nicht auf diese vier!
########## ########## ########## ##########
# \ # # -/# # 1# #-1 / #
# # # \ # # -# #-- \ /\ #
#1 - -\ # #- \ # # - \ # # - -- -#
#/- \1# # # # /\ # #/ \ #
# \ -/\# # -1- # # / -2# #/ / /#
#-/ \ /# # -/- # # - -# # / #
# \ \ # # \\ # # \ /# # - #
# 2 /# #1\2\ /\# #2 2\1 # #2-\3 23/#
########## ########## ########## ##########
Ergebnis
Sprachen treten gegen sich selbst an, also zögern Sie nicht, Nongolf-Sprachen zu verwenden. Um eine Lösung zu validieren, muss ich sie irgendwo testen können, um zu sehen, ob sie funktioniert!
Score ist die Anzahl der Bytes. Im Falle eines Unentschieden gewinnt die erste Antwort, die die Punktzahl erreicht.
Warnungen
- Wenn Sie sich nicht sicher sind, wie ein Ball reagieren soll, fragen Sie mich und ich werde klarstellen, dass ich so klar wie möglich war, aber ich bin mir sicher, dass es Fälle gibt, die verwirrend sind.
- Folien werden nur dann geritten, wenn Sie sie verlassen können . Stellen Sie sich das wie eine echte Folie vor. Es gibt einen Mann an der Spitze, der Sie nicht durch den Ball lässt, es sei denn, er tritt durch die andere Seite aus.
Beispiele für Ballbewegungen erläutern
###### ######
#-o- # BALL WOULD GO RD #- - #
# \ # # \o #
###### ######
###### ######
#-o- # BALL WOULD STAY #-o- #
# \\ # # \\ #
###### ######
###### ######
# -o# BALL WOULD STAY # -o#
# \# # \#
###### ######
###### ######
# o # BALL WOULD STAY # o #
# \/# # \/#
###### ######
###### ######
#-o- # BALL WOULD GO LD #- - #
# /\ # #o/\ #
###### ######
AKTUALISIERUNG
Wie kann ich testen, ob meine Antwort gültig ist?
Ich habe auf einer meiner Websites eine einfache Seite eingerichtet, auf der Sie ein zufälliges Rätsel und die Antwort finden. Nehmen Sie die Eingabe und vergleichen Sie sie mit der Ausgabe. Meine Lösung, ohne sich zu sehr um das Golfen zu kümmern, ist Python (Generator und Seite auch Python).389b
355b
Bestenliste
quelle
Antworten:
JavaScript (ES6), 157
196Bearbeite Zeichen für Zeichen anstatt Zeile für Zeile, viel besseres Ergebnis
Hinweis: Behandelt keine Ballwerte> 9. Aber es könnte mit 18 Bytes kosten. Siehe folgenden Basiscode.
TEST-Snippet (besser ganze Seite)
quelle
v>9?9:v
?Javascript (ES6),
453426409306290286 BytesDie erste und naheliegendste Lösung, die mir in den Sinn kam, ist eine, die sich um die Folien kümmert und diese dann zusammenführt oder ersetzt.
Ungolfed:
Testen Sie wie:
Vielen Dank an: @ edc65
quelle
b.replace(/o/g,'1').split``
kann um[...b.replace(/o/g,1)]
Java,
zu viele1102987 BytesWeil Java.
\ o / Es ist unter 1000!
Eine Seite Ziel war in der Lage , jede Iteration des Brettes zu drucken: nur in der Mitte entfernen
;
inwhile(g.i())
;
System.out.print(g.s());
(Obwohl diese deaktivieren funktioniert den letzten Druck , die die 0-> Leistungsumwandlung hat). Leider funktioniert in dieser Version die Schwerkraft seltsam. Bei jedem Durchgang nehme ich den ersten nicht festsitzenden Ball und bewege ihn. Kurzschlussiterate()
gibt es weniger Bytes als über die gesamte Platine und dann zurück, wenn sich etwas geändert hat.Dies ist eine vollständige Hauptklasse, die kompiliert und in der Befehlszeile mit folgendem Argument ausgeführt wird:
"Lesbare" Version:
quelle
Python3, 355b
Hier testen
quelle
PHP,
228 204 197194 Bytesliefert Warnungen in PHP 7.1. Legen Sie
(int)
vor$a[$t]+$c
zu beheben.Laufen Sie mit
php -nr '$a="<string>";<code>'
oder versuchen Sie es online .Nervenzusammenbruch
quelle