Hinweis für Moderatoren und Redakteure : Der Titel dieses Beitrags ist wirksam und sollte nicht geändert werden. Die Rechtschreibfehler sind beabsichtigt und Teil der Herausforderung.
Hintergrundgeschichte
Die (Stereo) typische schlechte SO-Frage fragt etwas in der Art von "Bitte senden Sie den Codez!" Mit anderen Worten, es wird jemand gebeten, die Arbeit für den Fragesteller zu erledigen und eine vollständige Lösung für ein einmaliges Problem bereitzustellen. Ich zitiere diese Frage auf Meta.SE :
... es geht um eine bestimmte Kategorie von Fragen, die aus absolut keiner Forschung, ohne Aufwand bestehen und einfach nach der vollständigen Lösung eines Problems fragen. Bei solchen Fragen wird im Allgemeinen davon ausgegangen, dass es sich bei Stack Overflow um einen kostenlosen Codierungsdienst handelt ...
Was ist Ihre eigentliche Herausforderung? Es ist einfach:
Ihr Programm oder Ihre Funktion usw. muss Eingaben als Zeichenfolge (von STDIN, Parameter usw.) annehmen und wenn die Zeichenfolge Plz send teh codez!
Ausgaben enthält -1 flag comment
(Downvote, als nicht zum Thema gehörend kennzeichnen und kommentieren, wie schlecht eine Frage ist). Andernfalls Ausgabe +1
(Sie stimmen ab).
Aber warte ... es gibt noch mehr!
Ihr Programm darf nicht 5 oder mehr dieser Zeichensätze enthalten:
- Alle Sonderzeichen (alles, was kein Leerzeichen, Zeilenumbruch (
0x0a
), Alphabet ohne Berücksichtigung der Groß- und Kleinschreibung oder Ziffer ist) - Beliebige Ziffer (0-9)
- Beliebig von
pzcm
(ohne Berücksichtigung der Groß- und Kleinschreibung) - Beliebig von
hten
(ohne Berücksichtigung der Groß- und Kleinschreibung) - Irgendein von
qwryuioasdfgjklxvb
- Irgendein von
QWRYUIOASDFGJKLXVB
Um klar zu sein, können Sie nur bis zu 4 dieser Zeichensätze verwenden.
Leerzeichen, Tabulatoren und Zeilenumbrüche sind in keiner Weise eingeschränkt, sie sind jedoch weiterhin in Ihrer Byteanzahl enthalten
Letzte Einschränkung
Ihr Programm darf NUR Unicode im Bereich von 0x20
(Leerzeichen) bis 0x7e
(~) sowie 0x0a
(LF Newline) und 0x09
(Tab) enthalten. Dies dient dazu, Code-Golfsprachen auszuschließen und traditionellen Sprachen eine Änderung zu geben oder zumindest das Spielfeld auszugleichen.
Anmerkungen:
- Dies ist Code-Golf , die kürzeste Antwort in Bytes gewinnt!
- Die Eingabe kann über STDIN, einen Funktionsparameter, einen Befehlszeilenparameter usw. erfolgen, jedoch nicht über eine Variable .
- Die Ausgabe kann an STDOUT, einen Funktionsrückgabewert oder sogar einen Fehler / eine Ausnahme erfolgen. Kann einen nachgestellten Zeilenumbruch enthalten.
- Traditionelle Sprachen werden zum Wettbewerb ermutigt, da diese Herausforderung viele Golfsprachen verbietet, indem hohe Unicode-Zeichen ausgeschlossen werden. C könnte sogar eine Gewinnchance haben!
- Irgendwelche Fragen? Kommentiere unten!
Wenn es zu schwer ist ...
Sie können die Zeichensätze in Ihrer Antwort ignorieren, sie werden dann jedoch nicht mehr wettbewerbsfähig.
HINWEIS: Sie können jetzt bis zu 4 Zeichensätze verwenden. Bitte.
Mit diesem Snippet können Sie überprüfen, ob Ihr Code gültig ist:
quelle
JS (JSFuck), 37959 Byte
Hier ist ein Kern , da PPCG lange Codes hasst.
Verwendet nur Sonderzeichen. : P.
Hier ist der Originalcode:
quelle
Plz send teh codez!
meine ich.z
ist falsch. GesichtspalmeC 102 Bytes
Verwendet keine Ziffer oder eine von
QWERTYUIOASDFGHJKLXVBN
. Probieren Sie es online aus!quelle
Netzhaut , 56 Bytes
Probieren Sie es online aus!
Verwendet Sonderzeichen, die beiden Groß- und Kleinschreibung und andere Kleinbuchstaben.
Zuerst entfernen wir die gesamte Eingabe, wenn sie nicht enthält
Plz send teh codez
. Wenn noch ein Eingang übrig ist, ersetzen wir ihn durch-1 flag comment
und vermeiden die Ziffer durch$#+
.$+
bezieht sich auf die letzte Erfassungsgruppe, die$0
(das gesamte Spiel) ist, wenn keine Erfassungsgruppen vorhanden sind.$#+
gibt dann die Anzahl der Aufnahmen an, was immer ist1
.Wenn die Zeichenfolge noch leer ist (dh wir haben sie in der ersten Stufe gelöscht), ersetzen wir sie durch
+1
(erneut$#+
für1
).quelle
C #, 77 Bytes
Nicht in der Lage zu sein, Ziffern zu verwenden, ist solch ein Schmerz.
quelle
Python 2,
959487 BytesVerwendet Sonderzeichen und alle Kleinbuchstaben (plus drei Zeichensätze und mit Ausnahme von "p", bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird) für insgesamt vier verwendete Zeichensätze .
Probieren Sie es online aus! Vielen Dank an @math_junkie für das Speichern von 8 Bytes! Vielen Dank an @officialaimm für das Speichern von zwei Bytes!
Sei
a
dieord()
eingebaute Funktion.Das ist wirklich so
b=1
.Wenn die Aussage im zweiten Klammerpaar wahr ist, drucken Sie die zweite Zeichenfolge im ersten Klammerpaar. Andernfalls drucken Sie den ersten.
quelle
str
, und Sie entfernen den Speicherplatz nachprint
: repllambda n,b=ord('b')-ord('a'):["+"+`b`,`-b`+" flag comment"][n=="Plz send teh codez!"]
Python 2/3,
817668 BytesVerwendet:
pzcm
(ohne Berücksichtigung der Groß- und Kleinschreibung)hten
(ohne Berücksichtigung der Groß- und Kleinschreibung)qwryuioasdfgjklxvb
Verwendet nicht:
QWRYUIOASDFGJKLXVB
-8 Bytes dank math_junkie
quelle
+
anstelle vonint
: TIOPython 3, 115 Bytes
Es werden keine Zahlen oder Großbuchstaben verwendet.
Probieren Sie es online aus
quelle
if "p"
,codez!" in
etc.str(len('a'))
zu einer Variablen können Sie einige weitere sparen. Esstr
kann auch vorteilhaft sein, die Nummer direkt in die Zeichenfolgen zu spleißen, anstatt anzurufen.Common Lisp, 81 Bytes
Spezial + Kleinbuchstaben + 2 Großbuchstaben = 4 Zeichensätze
Ungolfed
Erläuterung
(read-line)
Akzeptiert eine Eingabezeile von
*standard-input*
(standardmäßig STDIN).(search "Plz send teh codez!" ...)
Durchsucht das zweite Argument (die eingelesene Zeile) nach dem Index, in dem das erste Argument beginnt. Gibt entweder diesen Index oder
nil
(false) zurück, wenn er nicht gefunden wurde.(*)
Die Multiplikation in lisp wird so definiert, dass eine beliebige Anzahl von Argumenten verwendet wird, einschließlich keiner. In diesem Fall wird immer 1 zurückgegeben.
(format t "~:[+~s~;-~s flag comment~]" ...)
#'format
ist ähnlichfprintf
odersprintf
in C. Das erste Argumentt
bezeichnet die Ausgabe als*standard-output*
(standardmäßig STDOUT). Das nächste Argument ist die Formatzeichenfolge. "~" wird wie "%" in verwendetprintf
- die darauf folgenden Zeichen kennzeichnen einen Formatierungsvorgang."~:[<a>~;<b>~]"
ist die bedingte Formatierungsoperation. Es nimmt ein Argument an und fährt fort,<a>
wenn das Argumentnil
(falsch) war. Bei jedem anderen Wert, wiet
z. B. (true) oder einer Zahl (z. B.), wird der Wert fortgesetzt<b>
. Das dritte zu formatierende Argument (das erste, nacht
und die Formatzeichenfolge) ist die Suche.<a>
Wird also ausgewählt, wenn die Suche fehlschlägt (und<b>
ansonsten).In diesem Fall gibt der Zweig
<a>
(nil
/ false) "+ ~ s" aus. "~ s" konvertiert ein Formatargument in eine Zeichenfolge und druckt seine Zeichen aus. Das vierte zu formatierende Argument (das zweite nacht
und die Formatzeichenfolge) ist(*)
oder 1, daher wird "+1" gedruckt.Der
<b>
Zweig ist ähnlich: "- ~ s Flag-Kommentar". Es verwendet auch das vierte (zweite) Argument, um seine "~ s" auszufüllen, sodass es "-1 Flag-Kommentar" ausgibt.quelle
sh + sed, 72 Bytes
Verwendet Zeichensätze: 1, 3, 4, 5.
Zuerst wollte ich mit reinem Sed gehen, aber ich hatte keine Ahnung, wie ich die Verwendung von Ziffern vermeiden sollte. Also habe ich sh nur dafür benutzt.
let ""
hat den Exit-Status von1
, da er nicht als arithmetischer Ausdruck ausgewertet werden kann.z
ist nur ein Etikett und kann durch jedes andere Zeichen ersetzt werden.quelle
Mathematica, 265 Bytes
Das war schwer.
Lesbare Version:
Verwendet Sonderzeichen
hten
,qwryuioasdfgjklxvb
undQWRYUIOASDFGJKLXVB
. Mathematica ohne Sonderzeichen wäre grundsätzlich unmöglich, und fast alle stringbezogenen Funktionen sindString
in ihrem Namen enthalten, so dass die Auswahl hier wirklich eingeschränkt ist…Um die anderen Zeichensätze zu erhalten, benötigen wir einige Tricks. Um zu erhalten
1
, nehmen wir zunächst das Negativ des Quadrats der imaginären ZahlI
:i = -I I
. Später definieren wir auch3
durche = i+i+i
.Der Buchstabe
P
war ziemlich einfach: Mathematica behandelta^b
intern wiePower[a,b]
folgt : Alles, was wir tun müssen, ist, den Kopf dieses (Power
) zu nehmen, ihn in eine Zeichenfolge umzuwandeln und den ersten (aliasi
th) Buchstaben zu nehmen. (Wir werden Dinge in Strings verwandeln und den n- ten Buchstaben viel nehmen, also definieren wirt[s_,n_]:=ToString@s~StringTake~{n}
.) Der Buchstabem
ist ähnlich: Nehmen Sie den Kopf vona b
, das heißtTimes
, und holen Sie sich den dritten (akae
th) Brief.Der Buchstabe
c
ist etwas schwieriger: Wir verwenden die trigonometrische Identität1/Sin[x] == Csc[x]
(oder besser gesagt,i/Sin[x]
da wir sie nicht verwenden können1
) und nehmen den dritten Buchstaben vonCsc[x]
.Der wirklich schwierige Teil ist der
z
. Um ein zu machenz
, verwenden wir dieHurwitzZeta
Funktion (ja, wirklich). Wir erhalten das, indem wir die Wiederholungsrelation lösenRSolve[f[a + i] == f@a - i/Sqrt@a, f@a, a]
, die den String ergibtdavon ist das 68. Zeichen
z
. Wir bekommen die Nummer 68 als4^3 + 4
.Dies könnte wahrscheinlich weiter golfen: Das Hurwitz-Zeta-Zeug wird so ziemlich aus der Mathematica-Dokumentation kopiert, und es gibt wahrscheinlich einen kürzeren Weg, 68 zu bekommen - oder wir könnten eine andere Methode ganz für das verwenden
z
. Irgendwelche Vorschläge?quelle
Python 3.5 (
13710298878594 Bytes)Verwendet Kleinbuchstaben (3 Zeichensätze) + Sonderzeichen (1 Zeichensatz) = 4 Zeichensätze
Ich hatte fast vor, auch Leerzeichen zu vermeiden, aber die Einrückung in Python zwang mich, eine neue Zeile beizubehalten, sodass ich die Leerzeichen so ließ, wie sie waren.
Probieren Sie es online aus!
quelle
.upper()
+1
für Eingaben ausgeben , die nicht enthaltenPlz send teh codez!
Groovy, 78 Bytes
Verwendet keine Zahlen oder Großbuchstaben.
Nur eine einfache Verwendung des ternären Operators.
"a".length()
ist eine Problemumgehung, um 1 zu erhaltenWenn Sie
quelle
Swift (nicht wettbewerbsfähig) - 64 Bytes
Leider 5 Zeichensätze verwendet, könnte es nicht ohne sie schaffen ... Vorschläge sind willkommen!
quelle