Geben Sie in möglichst wenigen Unicode-Zeichen Folgendes aus (144 Zeichen):
1, 2, 3 o'clock, 4 o'clock rock,
5, 6, 7 o'clock, 8 o'clock rock,
9, 10, 11 o'clock, 12 o'clock rock,
We're gonna rock around the clock tonight.
Sie dürfen in Ihrem Code keine Zahlen außer der Ziffer verwenden 1
.
11
. Bedeutet der Befehl, dass Sie nur die Nummer 1 oder die Ziffer 1 verwenden können?1
. Ich habe nicht angegeben, wie oft, so dass die Tatsache, dass die Menschen verwendet haben,11
eine clevere Lücke ist, und ich bin alles dafür.Antworten:
Javascript -
140132Die Tatsache, dass 11 aus zwei Einsen besteht, lässt mich die Regeln, die ich denke, bestehen.
Erläuterung
Das k +++ s ist gleich (k ++) + s, also addiert es k zuerst zu x, inkrementiert dann k und addiert dann s zu x. Dieser Vorgang wird dreimal ausgeführt, bevor der letzte Satz hinzugefügt wird.
quelle
k+++s
das? Ist es(k++) + s
oderk + (++s)
oder(k++) + (++s)
?x+=k+++s+k+++s+k+++t+s+k+++t+u
alert
ist kürzer alsconsole.log
. Das Verwenden der automatischen Anzeige der letzten Berechnung in der Konsole ist wie ein Betrug.C # - 186
Beste Golfsprache oder beste Golfsprache?
quelle
i++ +
BitsWriteLine
-> ausführenWrite
und ein Literal\n
am Ende der Zeichenfolge verwenden.Brainfuck (1574)
Keine seriöse Einreichung, sondern folgt den Regeln.
Kann hier getestet werden .
quelle
#RESPECT
Rubin, 100
quelle
s="%i, %i#{", %i o'clock"*-~1} rock,\n"
(ersetzen Sie das\n
durch einen wörtlichen Zeilenumbruch). Tolle Idee zu benutzen$$
!r=-~1
Inline zuweisen , können Sie"..."*-~r
anstelle von verwendens+s+s
, um die Zuordnung zu löschens
.Perl 123
Der reguläre Ausdruck stimmt
(
mit)
und überein*
. Ich habe die Tatsache benutzt, dass der ASCII-Code von(
40, von)
41 und von*
42 ist.Das
r
Flag des regulären Ausdrucks aktiviert "in place substitution" und dase
Flag aktiviert die Codeauswertung (ähnlich wiex.replace(/.../, function(m){...})
in JavaScript).(clock,rock)
ist eine Anordnung von zwei "bloßen Wörtern".$&
ist die aktuelle Übereinstimmung des regulären Ausdrucks undord$&
der ASCII-Wert.Maskiert durch 3 oder
1+1+1
die ASCII-Werte sind jetzt 0, 1 und 2, sodass ich sie verwenden kann, um das entsprechende Array-Element abzurufen. Da 2 außerhalb des Arrays liegt, wird der Operator "Kurzschluss"||
ausgewertet++$i
. Im ersten Match$i
wird esundef
so erhöht, dass ich 1 bekomme, dann 2 und so weiter ...In einfachen Worten. Ersetzt
*
durch das aktuelle Vorkommen,(
durch "Uhr" und)
durch "Rock".quelle
Bash + Coreutils, 120 ASCII, 92 Unicode
ASCII:
Unicode:
Base64-codierte Unicode-Version (falls Unicode-Renderings durcheinander geraten):
quelle
eval
zubash
oder anstatt zu leitensh
?$r
s nicht gezählt !Brainfuck, 1299
Bleuuuurgh . Das war schrecklich. Ich weiß nicht, warum ich das getan habe, es schien am Anfang ziemlich einfach zu sein. Erstes und wahrscheinlich letztes Brainfuck-Skript. Probieren Sie es hier aus.
Mit Hilfe eines automatischen Codegenerators konnte ich ein Skript schreiben, das die meisten Zeichen wiederverwendete, anstatt jedes von Grund auf neu zu generieren. Es sind nur 275 Zeichen kürzer als die hier veröffentlichten .
Die Ausgabe ist nicht mit Zeilenvorschub abgeschlossen.
Ich könnte später eine Erklärung abgeben. Im Wesentlichen, das jede lange Linie ist nicht so etwas wie
>>>>>>>
oder<<<<<<<
oder>>.>>.>>.>>.
erzeugt ein Zeichen oder eine Reihe von ihnen.quelle
Lua -
217164154151149143Die alte wurde dahingehend geändert, dass stattdessen eine Schleife verwendet wird, wodurch eine Menge Charaktere gespeichert werden. Vielen Dank an TeunPronk, der mir geholfen hat, weitere 10 Zeichen zu entfernen, und an WilliamBarbosa, der mir weitere 3 Zeichen entfernt hat. Mit der Variablen können 2 weitere Zeichen gespeichert werden
k
. Durch Eliminieren der Variablen werden weitere 6 Zeichen gespeichert,r=" rock,"
da diese nur einmal verwendet werden.Ungolfed,
quelle
j
und verwendenk
.O
, EntfernenO
vonR
, legen Sie einen Raum inR
und ersetzenR
durchO,R
in Ihremio.write
:)io.write
in einer Variablen (f=io.write
) speichern und diese weiter reduzierenCJam - 90 ASCII / 54 Unicode
ASCII:
Unicode:
Probieren Sie sie unter http://cjam.aditsu.net/
quelle
Python (123)
PYG (112)
quelle
Brainfuck - 680
Testen Sie es hier: ideone.com/Wi9ftB
Wie ich versprochen habe, ist hier eine bessere Version. Mein Gehirn fühlt sich an wie ... Oh, daher kommt der Name.
Erklärung: (weil es nicht zu warten ist und ich nicht vergessen möchte, wie es funktioniert)
Zunächst müssen Sie das beste Datenlayout für diese Herausforderung auswählen. Ich hatte die Idee dass
-4 outmost loop -3 newline char -2 space -1 numbers 1 lowercase #1 2 lowercase #2 3 comma, apostrophe, period 4 condition (outmost loop < 3) 5 inner loop 6 second inner loop
Wir müssen glauben, dass dies optimal ist, es sei denn, es wird zu viele Schichten geben (in diesem Fall müssen Sie das Layout neu ordnen).
Danach habe ich eine 4x9x3-Schleife verwendet, um die Startwerte für Newline, Number, die beiden Kleinbuchstaben und das Komma festzulegen. (Alle kleineren ASCII-Codes haben 4x9 = 36 und die beiden Kleinbuchstaben haben 4x9x3 = 108, dann habe ich einige addiert und subtrahiert, um ihren tatsächlichen Wert zu erhalten.)
Wenn die Voreinstellung abgeschlossen ist, wird der Code in die äußerste Schleife eingegeben, die dreimal durchlaufen wird. Ich erkläre es durch Pseudocode.
Wenn dieser Abschnitt fertig ist, muss ich nur noch die letzte Zeile drucken. Wir haben jedoch ein W in Großbuchstaben, das ohne Verwendung zu vieler Zeichen erzeugt werden muss. An diesem Punkt sind wir hier:
also setze ich [-3] 4 mal auf [-1] und subtrahiere 3, um 87 (W) zu erhalten:
>[>>++++<<-]>>---.
dann lösche ich es
[-]
und verschiebe [-2] an diese Stelle [-1], so dass das Leerzeichen in der Nähe der Kleinbuchstaben liegt.
<[>+<-]
Danach werden nur die Buchstaben gedruckt. Kleinbuchstabe Nr. 1 steht für den unteren Teil 97-107 und Kleinbuchstabe Nr. 2 für den obigen Bereich.
quelle
JavaScript,
111107 Zeichen, ohne eine Zahl zu verwenden.Führen Sie diese Snippets in der JS-Konsole Ihres Browsers aus:
107 (inspiriert von http://xem.github.io/obfuscatweet/ und der anderen Antwort von JS):
111 (nur den ganzen String einpacken und das Eval entfernen):
quelle
C - 145 - probier mich aus
C - 172 - probier mich aus
quelle
#include <stdio.h>
zu verwendenprintf
?main(){...
PHP - 125
129Version 1 (129)
Version 2 (125)
Saubere Version:
quelle
Perl,
114111110108110
111
114
quelle
C ++
261203Bearbeitet meinen ersten Versuch; es hat funktioniert, als ich es zum ersten Mal getestet habe, aber das scheint ein Zufall zu sein; Nachträgliches Inkrementieren in einem Stream ist "undefiniertes Verhalten", und es hat seltsame Dinge bewirkt (einschließlich Bluescreening für Windows 7!), als ich versuchte, ihn erneut auszuführen. Ich denke, dass die Verwendung von printf anstelle von std :: cout mit post-increment verwendet werden könnte, um ein kürzeres Programm zu erhalten.
Wurde erneut bearbeitet und durch erneutes Implementieren der Schleife auf 231 reduziert. Nochmals bearbeitet, jetzt auf 203 ... diese #Defines waren in der Loop-Version nicht alle nützlich.
Für diejenigen, die sich fragen, wie C ++ eine Funktion "m" ausführen kann, kann der Einstiegspunkt als jede Funktion mit nur einer Compileroption definiert werden, ebenso wie das Setzen aller Funktionen auf stdcall; Ich habe beide Schalter beim Kompilieren der obigen verwendet. Wenn Ihnen der neu definierte Einstiegspunkt nicht gefällt, addieren Sie 3 zu meiner Zeichenanzahl.
quelle
m()
. Sie können jedochvoid
main
Schnell -
136134quelle
Java, 228
Eine fest codierte Lösung wäre wahrscheinlich kürzer gewesen.
quelle
1+1+1
ist 9 Zeichen kürzer als"two".length()"
. Und ist dasString[] a
nötig?Befunge-98 (
402268)Nun ein unefunge!
quelle
,,:,1+
,a11+/a*b1111+++-+w:,
, Streuzeichen unterhalb der Hauptcodezeile ... typisch Befunge. Die meisten Online-Dolmetscher haben Probleme mit der Leitungslänge (sie liegt weit über dem Limit). Kennen Sie eine, die nichts dagegen hat?Groovy -
140139 ZeichenGolf, beeinflusst von William Barbosas Antwort :
Ungolfed:
quelle
Mathematica - 153
quelle
C ++ 252
quelle
P(", ")
anstelle vonQ
2 Zeichen speichern.N
undR
nur einmal auftauchen: Es wäre besser, sie einzubinden, als ein Makro zu erstellen.#include<iostream> #define P std::cout<<++i<< #define C" o'clock" #define F P", ";P", ";P C<<", ";P C<<" rock"<<std::endl; int i;main(){F F F std::cout<<"We're gonna rock around the clock tonight.";}
Java (v2) -
250241232 ZeichenDies ist ein vollständiges laufendes Programm, beeinflusst von William Barbosas Antwort beeinflusst wird .
Golf gespielt:
Ungolfed:
quelle
ECMAScript6 -
136135Verwendet nicht einmal die erlaubte
1
Ziffer:Getestet in der Firefox-Konsole.
quelle
PowerShell,
123118109Nach einem schrecklichen Start (167) habe ich ein paar Redewendungen, die ich nicht einmal brauchte, entfernt und sie zumindest kürzer als die Referenz gemacht.
quelle
Haskell -
138137 ZeichenAls eigenständiges Programm:
Bearbeiten: Früher hatte ich eine Hilfsfunktion, mit der ich s definieren konnte
es stellt sich jedoch heraus, dass es 1 zusätzlichen Charakter kostet. Gibt es eine Möglichkeit, alle "Uhr" s / "Rock" s / "Ock" s zu komprimieren?
quelle
JavaScript, 140
Ich mache einen String wie "x, x, x Uhr x Uhr rock, \ n ..." Dann ersetze ich die "x" durch Zahlen.
quelle
PHP 150
Keine Zahlen, einschließlich der 11, bei denen es sich nicht um zwei zusammengeklebte Einsen handelt, sondern der Zahlenwert elf.
quelle
PowerShell,
156140136129127Ungolfed:
quelle
$i++,$i++,"$(($i++)) o'clock","$(($i++)) o'clock rock,"-join', '
innerhalb der Schleife verwenden.Cobra - 193
quelle