Schreiben Sie ein Programm, das eine Zeichenfolge als Eingabe erhält und die Anzahl der darin enthaltenen alphanumerischen und nicht-alphanumerischen Zeichen zählt. Es muss sein Ergebnis so anzeigen:
Eingabe: http://stackexchange.com
Ausgabe:20 + 4 = 24
Der Haken ist, dass Ihr Quellcode die gleiche Anzahl von alphanumerischen Zeichen haben muss wie nicht-alphanumerische. Kommentare sind nicht erlaubt, Leerzeichen werden ignoriert. (Die Sprache mit dem Namen Whitespace kann um Stimmen konkurrieren, wird aber offensichtlich nicht als Gewinner ausgewählt.)
Zeichen im Code müssen mindestens eine geringfügige Rechtfertigung haben, sie sollten nicht völlig überflüssig sein. Beispielsweise sind längere Variablennamen i = (j*3)+4;
anstelle von i = j*3+4;
zulässig. Ist i = i + 1;;;;;;
es aber nicht.
Außerdem gelten die Standardregeln für Code-Golf.
O.
,O?
undO!
dann irgendein Programm , das ich schreiben erfüllt die Zeichenklasse Einschränkung ... Natürlich ist es wahrscheinlich auf die Länge Geschäft zu verlieren.Antworten:
Perl, 32 + 32 = 64
Die Zeichenfolge wird in STDIN erwartet. Die Ausgabe wird nach STDOUT geschrieben. Leerzeichen werden ignoriert. Meine Interpretation der Aufgabe ist, dass das Programm in der Lage sein sollte, auf sich selbst zu laufen, um die Punktzahl zu erhalten.
Ungolfed mit Kommentaren
Ich habe mehrere Variationen mit der gleichen Anzahl von Bytes gefunden, zB:
Beispiele
Beispiel aus der Frage:
Laufen auf sich selbst (
a.pl
):Die Dateigröße beträgt 104 Bytes, daher werden 40 Bytes als Leerzeichen ignoriert.
Perl, 29 + 29 = 58
Der String wird bei STDIN erwartet und ist auf die erste Zeile beschränkt. Das Ergebnis wird nach STDOUT gedruckt. Leerzeichen werden ignoriert.
Ungolfed
Beispiele
Datei
a.pl
enthält das Perl-Skript.Beispiel aus der Frage:
Laufen auf sich selbst:
Die Dateigröße
a.pl
beträgt 65 Bytes, daher werden 7 Bytes als Leerzeichen ignoriert.quelle
C - 96 (48 + 48) Zeichen
Es ist etwas lesbar. Es gibt jedoch Raum für Verbesserungen.
quelle
Bash + Coreutils, 72 (36 + 36) Zeichen ohne Leerzeichen
Ausgabe:
Vorherige Antwort:
Pure Bash, 92 (46 + 46) Zeichen ohne Leerzeichen
Ausgabe:
quelle
PowerShell (43 + 43 = 86)
Golf gespielt
Nicht golfen
Prüfung
Testen mit dem Code selbst, um die Kriterien zu erfüllen
"
wurde mit `maskiert, was nicht Teil der Zeichenkette ist.quelle
GolfScript, 74 Zeichen (= 37 + 37)
Online-Test für den Code mit dem Code als Eingabe.
quelle
Rubin 38 + 38 = 76
Dieses Programm zählt nachgestellte Zeilenumbrüche in der Eingabe.
Die Zeichenanzahl wird vom Programm selbst festgelegt:
$ ruby alphabalance.rb alphabalance.rb
:)quelle
PowerShell, 70 Byte (= 35 + 35)
Testskript:
Ausgabe:
PowerShell, 70 Byte (= 35 + 35), alternativ
quelle
Python 2 (60 + 60 = 120)
Schwierig, es gibt wahrscheinlich Raum für Verbesserungen. Wie die Tatsache, dass die Funktion selbst verwendet werden kann, um eine eigene alphanumerische Waage auszuwerten.
Prüfung:
quelle
repr
.C ++, 146 (73 + 73)
178 (89 + 89)Nicht-Leerzeichen #Original
<algorithm>
ohne guten Grund enthalten. Hoppla.Ich zähle nur die Zeichen in den folgenden Zeilen
//Code itself starts here
. Dies bedeutet insbesondere, dass nicht gezählt wird#include <string>
. Ich zähle auch Trigraphen als jeweils drei Zeichen, was vielleicht umstritten ist. Beachten Sie, dass beim Testen des Programms im eigenen Quellcode einige Sorgfalt erforderlich ist, um das Ersetzen von Trigraphen innerhalb des String-Literal zu verhindern.Hier gibt es einige besondere Designentscheidungen - in den meisten Produktionscodes werden Sie nicht auf Trigraphen und bereichsbezogene For-Schleifen in derselben Funktion stoßen -, aber ich halte alles für 'vertretbar'.
quelle
Python 52 + 52 = 104
Interessante Herausforderung, da Python nicht-alphanumerische Zeichen vermeidet.
Kleine Rechtfertigung für die Verwendung von Slice: Es beschleunigt es (vielleicht?)
quelle
print
keine Klammern erforderlich sind, und verwenden Sie die'%d + %d = %d' % (a,l-a,l)
Methode. Das sollte einige Zeichen speichern.Julia, 64
Alle unnötigen nicht-alphanumerischen Zeichen sind die letzten
;
und einige der()
in der Zeichenfolge enthaltenen Formatierungen. Sie wurden fast perfekt ausbalanciert und als Zweierpotenz ohne viel Fummelei ausgegeben.quelle
Perl, 64 Zeichen ohne Leerzeichen:
Leicht über perl -MO = Deparse und einige Kommentare geklärt:
Das ORS $ \ wird bei jedem Druckaufruf automatisch angehängt, wobei die Gesamtzahl am Ende steht.
quelle
Python 2, 50 + 50 = 100
Führen Sie es hier aus: http://repl.it/8CH
quelle
Rebol (64 + 64 = 128)
Anwendungsbeispiel (in der Rebol-Konsole):
NB. Das Programm ignoriert Leerzeichen, Tabulatoren und Zeilenumbrüche.
quelle
J - 46 + 46 = 92
Zählt Whitespace, sodass Sie ohne Änderung keinen Selbsttest durchführen können. Übernimmt die Eingabe für stdin. Hat einen schlechten Mund, sollte es mit Seife auswaschen gehen.
Verwendung:
quelle
Javascript - 76 (38 + 38)
Beispiel Input:
http://stackexchange.com
Output:
20 + 4 = 24
Laufen auf sich selbst:
PS Für diejenigen, die daran interessiert
(o + $)
sind, ein alphanumerisches Gleichgewicht aufrechtzuerhalten, ist dies nicht der Fall. Denn nach dem Sehen vono + " + "
JS würden sich alle dafür entscheiden+
, String-Konkatenatoren statt Zahlenaddierer zu sein. Somit sind die Klammern notwendig oder20 + 4
würden204
eher werden als24
: DViel Spaß beim Codieren!
quelle
Clojure: (31 + 31 = 62) Zeichen ohne Leerzeichen
Ausgabe:
quelle
CJam, 27 + 27 = 54
CJam ist ein paar Monate neuer als diese Herausforderung, daher ist diese Antwort nicht für das grüne Häkchen geeignet. Es war trotzdem eine lustige Übung!
Die Eingabezeichenfolge wird als Befehlszeilenargument verwendet, sodass sie im Online-Interpreter nicht funktioniert. Sie können sie jedoch mit dem Befehl testen Java-Interpreter .
Erläuterung
quelle