Ein guter Vorsatz für 2015 ist, nachhaltiger zu leben. Wir beginnen mit dem Recycling. Recycling-Code, das ist!
Ihre Aufgabe ist es, die Nummer 2015
mit oder ohne Zeilenumbruch an STDOUT zu senden (und nur das). Allerdings müssen Sie dies tun , indem das Recycling einige alte Code aus PPCG. So funktioniert das:
- Wählen Sie eine Antwort aus, die vor dem 16.12.2014 00: 00: 00Z auf CodeGolf.SE veröffentlicht wurde (an dem Tag, an dem ich dies in der Sandbox veröffentlicht habe). Ausnahme: Sie dürfen keine Antworten aus der letztjährigen Neujahrs-Challenge verwenden .
- Wählen Sie einen Codeblock aus dieser Antwort aus (kein Inline-Codeausschnitt, sondern ein eigener Absatz). Dieser Block muss als tatsächlicher Code angekündigt werden, z. B. können Sie keine Testfälle oder Beispielausgaben verwenden, die eine Monospace-Formatierung verwenden.
- Ordnen Sie die Zeichen in diesem Codeblock neu an, um Ihre Übermittlung für diese Herausforderung zu bilden. Sie dürfen nur die Reihenfolge ändern, keine Zeichen hinzufügen oder entfernen. Dies schließt Zeilenumbrüche ein.
- Sie müssen nachweisen können, dass der ursprüngliche Quellblock in Ihrer Sprache syntaktisch gültig ist. Im besten Fall können Sie dies tun, indem Sie zeigen, dass es ohne Kompilierungs- oder Laufzeitfehler ausgeführt wird. Während der ursprüngliche Code möglicherweise Java war, können Sie ihn für eine Whitespace-Antwort verwenden (da jede Datei in Whitespace gültig ist), aber möglicherweise nicht für eine Python-Antwort (da das Original keine gültige Python-Syntax hat) ).
Beachten Sie, dass Ihre Antwort alle Eingaben und den externen Status (einschließlich des aktuellen Datums) ignorieren muss. Es kann beispielsweise aus STDIN lesen, solange es nicht abstürzt, wenn es leer ist, und für alle möglichen Inhalte des Streams dieselbe Ausgabe erzeugt.
Der resultierende Code muss ein vollständiges Programm sein (weder eine Funktion noch ein Snippet, das eine REPL-Umgebung voraussetzt).
Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes ).
Bestenlisten
Ich bin mir sicher, dass dies in verschiedenen Sprachen sehr unterschiedlich ausfallen wird. Das folgende Stack-Snippet generiert daher sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){$.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(e){answers.push.apply(answers,e.items);if(e.has_more)getAnswers();else process()}})}function shouldHaveHeading(e){var t=false;var n=e.body_markdown.split("\n");try{t|=/^#/.test(e.body_markdown);t|=["-","="].indexOf(n[1][0])>-1;t&=LANGUAGE_REG.test(e.body_markdown)}catch(r){}return t}function shouldHaveScore(e){var t=false;try{t|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(n){}return t}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading);answers.sort(function(e,t){var n=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0],r=+(t.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0];return n-r});var e={};var t=1;answers.forEach(function(n){var r=n.body_markdown.split("\n")[0];var i=$("#answer-template").html();var s=r.match(NUMBER_REG)[0];var o=(r.match(SIZE_REG)||[0])[0];var u=r.match(LANGUAGE_REG)[1];var a=getAuthorName(n);i=i.replace("{{PLACE}}",t++ +".").replace("{{NAME}}",a).replace("{{LANGUAGE}}",u).replace("{{SIZE}}",o).replace("{{LINK}}",n.share_link);i=$(i);$("#answers").append(i);e[u]=e[u]||{lang:u,user:a,size:o,link:n.share_link}});var n=[];for(var r in e)if(e.hasOwnProperty(r))n.push(e[r]);n.sort(function(e,t){if(e.lang>t.lang)return 1;if(e.lang<t.lang)return-1;return 0});for(var i=0;i<n.length;++i){var s=$("#language-template").html();var r=n[i];s=s.replace("{{LANGUAGE}}",r.lang).replace("{{NAME}}",r.user).replace("{{SIZE}}",r.size).replace("{{LINK}}",r.link);s=$(s);$("#languages").append(s)}}var QUESTION_ID=43048;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/;var NUMBER_REG=/\d+/;var LANGUAGE_REG=/^#*\s*([^,]+)/
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src=https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js></script><link rel=stylesheet type=text/css href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id=answer-list><h2>Leaderboard</h2><table class=answer-list><thead><tr><td></td><td>Author<td>Language<td>Size<tbody id=answers></table></div><div id=language-list><h2>Winners by Language</h2><table class=language-list><thead><tr><td>Language<td>User<td>Score<tbody id=languages></table></div><table style=display:none><tbody id=answer-template><tr><td>{{PLACE}}</td><td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table><table style=display:none><tbody id=language-template><tr><td>{{LANGUAGE}}<td>{{NAME}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table>
Antworten:
GolfScript, 9 Bytes
Die ursprüngliche Antwort (dibs!) Ist ebenfalls in GolfScript, daher weiß ich, dass sie syntaktisch gültig ist. Ich habe auf http://golfscript.apphb.com/ getestet .
Ich verabscheue die Verwendung von Sprachen, die für das Golfen entwickelt wurden, aber ich musste diese Herausforderung gewinnen, also habe ich meine Werte durch das Posten dieser Antwort verraten. Ich weiß nicht, was die meisten Charaktere in dieser Sprache tun, aber ich habe versehentlich beim Überfliegen einer GolfScript-Antwort erfahren, dass ein unübertroffener
}
Kommentar den Rest des Programms auskommentiert . Dies erlaubte mir, den Rest der Charaktere zu ignorieren.quelle
Befunge-93, 2085 Bytes
Ich dachte, ich hätte Spaß und würde Meta machen, indem ich das Beste aus dem Recycling recycelte . Der Kürze halber werden hier keine Auszeichnungen vergeben.
Dies ist eigentlich auch ein Polyglot für 5 Sprachen: Befunge-93 , oOo Code , Pyth , Python 3 und Ruby. Da der ursprüngliche Code jedoch nur für Befunge-93 syntaktisch gültig ist, zähle ich das nur.
Leider hatte der ursprüngliche Code nur ein Paar
[]
und zu viele.
s, so dass ich Brainfuck nicht einbauen konnte (daher der oOo-Code).Anmerkungen
Dies erwies sich als überraschend restriktiv, weil:
001111111222
erfordert die Verwendung vonord
für Ruby und Python. Insbesondere gibt es keine5
, was sich als Schmerz für Pyth herausstellte.@
bedeutete, dassp
zur Platzierung eine@
für Befunge verwendet werden musste.*
bedeutete, dass wir multiplizieren mussten, indem wir durch die Umkehrung einer Zahl teilten. Spaß.Befunge-93
Das Befunge-Programm ist
wo wir die nutzlosen Anweisungen übersprungen haben. Wir codieren jede Ziffer als Differenz der ASCII-Werte zwischen Zeichen, insbesondere
cabf
gegenübera
.oOo Code
Der entsprechende BF ist
, von denen der einzige relevante Teil ist
Pyth
Pyth führt also nur die erste Zeile aus
Beachten Sie, dass Pyth eine Präfixnotation verwendet, der erste Teil der Zeile ist also tatsächlich
( Anmerkung:
e
bedeutet%10
)Aufgrund der Natur von Pyth wird dies automatisch gedruckt. Der Rest der Zeile ist gültiges Pyth, aber das vorangestellte Leerzeichen vor dem
o
unterdrückt das automatische Drucken.Python 3
Der Großteil des Python-Codes wird mit Strings auskommentiert, insbesondere mit einem großen String in dreifachen Anführungszeichen in der Mitte. Wenn wir ein paar Strings ignorieren, haben wir:
Die erste und letzte Zeile sind syntaktisch gültig, tun aber nichts. Die beiden mittleren Zeilen geben aus, was wir brauchen.
Rubin
Der Ruby-Code ist ähnlich, aber wir verwenden einen Heredoc anstelle einer dreifach zitierten Zeichenfolge, um den größten Teil des Programms zu kommentieren. Wir ignorieren einige verirrte Zeichenketten und haben:
Wieder ist die erste Zeile syntaktisch gültig, führt aber nichts aus. Die zweite Zeile gibt aus, was wir brauchen.
quelle
CJam, 12 Bytes
Das Thema Entschlüsseln des Codes ist eine gute Quelle für das Drucken von Zufallszahlen. Es hat sehr viel Spaß gemacht, diese zusammenzusetzen :)
Bonus Antworten
14 Bytes:
19 Bytes:
quelle
Strauß, 198
Ich freue mich auf eine Antwort von Ostrich. Es ist mir egal, wie lange es dauert. : P (das ist übrigens Version 0.5.0 )
Original :
Ich habe nur folgendes geändert:
Umhüllt alles andere als
2 n15
in einen Block ({}
), der sofort auftaucht (;
).2 n15
Am Ende stecken .2
drückt a2
,n
drückt a0
und15
drückt15
, was letztendlich2015
bei der Ausgabe wird.Das hat mir tatsächlich geholfen, einen Fehler zu finden:
2n15
funktioniert aus irgendeinem Grund nicht (es wird gedruckt215
), aber beides2 n15
und2n 15
funktioniert. Ich muss herausfinden, warum das so ist ...Hier ist die Suchanfrage, mit der ich dieses perfekte Codebeispiel gefunden habe:
Diese Antwort würde für 140 funktionieren, aber ich werde sehen, ob ich kleiner werden kann ...
quelle
JavaScript, 26 Bytes
Original :
Recycelt:
Es verschiebt nur 4030 ein Bit nach rechts.
quelle
CJam, 14 Bytes
Dieses ist ein bisschen schwierig, also musste ich es posten, obwohl es ein bisschen lang ist. Die ursprüngliche Antwort befindet sich ebenfalls in CJam, ist also gültig.
Ursprüngliche Antwort:
Recycling 2015:
Wie es funktioniert
Der Stapel enthält also
20
und15
welche nacheinander gedruckt werden, Druck 2015Probieren Sie es hier online aus
quelle
Marbelous, 54 Bytes
Langweilige Antwort (54 Bytes)
(gefolgt von einer Tonne nachgestellten Zeilenumbrüchen, die 54 Bytes entsprechen)
Ursprüngliche Antwort
Auf der Hauptplatine werden einfach Murmeln abgelegt, die die einzelnen Zeichen von darstellen
2015
.R
undQ
Boards werden definiert, aber nie verwendet.Alternative Antwort (92 Bytes)
Ursprüngliche Antwort
Leerzeichen als leere Zellen sollten angekreuzt werden. Dies wird zuerst gedruckt
2
(0x32) und dann0x03+0x02+0x0A=0x0F=15
als dreistellige Dezimalzahl (015
). Die ersten drei Zeilen machen nichts.Testen Sie die Antworten hier.
quelle
Pyth, 25
https://github.com/isaacg1/pyth
Hier ist die ursprüngliche Antwort (auch in Pyth geschrieben). Ich weiß, dass dies keine sehr konkurrenzfähige Antwort ist (es gibt eine Python-Antwort mit der Länge 26), aber ich habe es wirklich genossen, mir diese zu überlegen, und ich denke, es kommt eine ziemlich humorvolle Antwort heraus.
Erläuterung:
Grundsätzlich wird eine Liste der ersten zwei Millionen Zahlen so gefiltert, dass sie gleich 2015 ist. Anschließend wird diese Liste der Zahlen als die Ziffern einer 10-MILLIARDEN-Basiszahl behandelt. Zum Glück gibt es nur eine Zahl, die 2015 entspricht, sodass Sie 2015 * 10000000000 ^ 0 erhalten, also nur 2015. Die Ausführung dauert einige Sekunden.
quelle
Perl, 48 Bytes
Ursprüngliche Antwort
quelle
Python 2, 26 Bytes
Entnommen aus dem kleinsten Python-Skript, um gerade Zahlen von 0 bis 100 zu drucken . Dies ist wahrscheinlich die Lösung, auf die @FryAmTheEggman anspielte.
quelle
Mathematica, 60 Bytes
Quelle
Der Teil in
Floor
Klammern ist nur eine Reihe von Funktionsanwendungen nicht existierender Funktionen (mit denen Mathematica aufgrund seines symbolischen Berechnungsmodells kein Problem hat). Ebenso ist das einfache Schreiben des Bodens undPrint@2015
eine Multiplikation, über die sich Mathematica auch nicht beschwert. Ohne den syntaktischen Zucker wäre esDa wir nicht von einer REPL-Umgebung ausgehen, wird das ausgewertete Ergebnis davon nie gedruckt (was wäre
Null Floor[ggggiiimmnnoorrrstt[ee[RS[DF[IM], ad], ee], 0.22346]]
), sondern nur der Nebeneffekt vonPrint
geht tatsächlich an STDOUT.Vielen Dank an Sp3000 für das Aufdrehen der Quelle.
quelle
> <> 57 Bytes
Ursprünglicher C ++ - Code aus der RadioASCII-Challenge :
Recycling- Code > <> (Fisch) :
Wie Befunge ist> <> eine stapelbasierte 2D-Sprache. Die Ausführung beginnt oben links und erfolgt zunächst nach rechts. Nur die erste Zeile des Programms wird folgendermaßen ausgeführt:
Die große Frage ist nun: Warum ist der C ++ - Code gültig> <>? In> <> gibt es Möglichkeiten, die Richtung des Programmflusses zu ändern (schließlich handelt es sich um eine 2D-Sprache):
Wenn der C ++ - Code ausgeführt wird,
#
spiegelt die Initiale den Programmfluss nach links wider. Aber> <> ist toroidal, so dass der Anweisungszeiger am Ende der Zeile erscheint und den>
Programmfluss wieder nach rechts lenkt. Der Zeiger#
springt dann zurück zu , springt zurück zu>
... und somit tritt eine Endlosschleife auf und ein Fehler wird niemals geworfen.quelle
Python 3, 1878 Bytes
Sehr lang, wollte aber trotzdem teilen:
Entnommen aus KennyTMs Antwort .
Ich habe gesehen, dass 2, 0, 1 und 5 und # im Code zu finden sind, also habe ich ein paar Zeichen verschoben, um sie zu machen,
print(2015)
und konnte den Rest auskommentieren . Ich habe auch den PIL-Import in den Kommentar eingefügt, sodass diese Bibliothek nicht erforderlich ist.quelle
PHP, 21 Bytes
Versuchen wir es noch einmal. Entnommen aus einer anderen PHP-Antwort von Unscramble the Source Code. Es ist ziemlich einfach, aber bis jetzt ist es das kürzeste Programm in einer nicht-golfenden Sprache. Sie können es unter http://codepad.org/15EjIYAU überprüfen . Der ursprüngliche Code lautet wie folgt:
quelle
4*2/8
;)