Bitte senden Sie den Codez!

8

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 , 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:

programmer5000
quelle

Antworten:

3

CJam , 50 49 48 Bytes

q"Plz send teh codez!"#)"- flag comment""+"?(T)@

Verwendet keine Ziffern oder Großbuchstaben.

Probieren Sie es online aus!

Erläuterung

q                       e# Push the input
"Plz send teh codez!"#  e# Find index of "Plz send teh codez!" in the input (-1 if not found)
)                       e# Increment the index
                        e# Check the truthiness of the index:
 "- flag comment"       e#   If truthy (i.e. it appeared in the input), push this string
 "+"                    e#   If falsy (it wasn't in the input), push this string
?                       e# 
(                       e# Uncons from left, removes the first character of the string and 
                        e#  pushes it on the stack
T)                      e# Push 0, and increment it to 1
@                       e# Bring third-from-top stack element to the top
                        e# Implicit output of stack contents
Geschäftskat
quelle
11

JavaScript (ES6), 60 Byte

x=>/Plz send teh codez!/.test(x)?~x+' flag comment':'+'+-~[]

Alles war unkompliziert, außer zu vermeiden, 1irgendwo zu verwenden. Ich benutze ~x, um zu bekommen -1(da wenn xenthält Plz send teh codez!, ist es keine gültige Zahl und wird daher ~xgeben -1), und um -~[]zu bekommen 1(da wenn xzB ist '7', -~xwird 8, so können wir uns nicht verlassen x).

Testschnipsel

ETH-Produktionen
quelle
Netter Missbrauch der JSFuck-Logik!
Matthew Roh
9

JS (JSFuck), 37959 Byte

Hier ist ein Kern , da PPCG lange Codes hasst.

Verwendet nur Sonderzeichen. : P.

Hier ist der Originalcode:

alert(prompt().includes("Plz send teh codez!")?"-1 flag comment":"+1")
Matthew Roh
quelle
Sie haben das P nicht groß geschrieben;)
darrylyeo
@ Darryleo Es soll sein.
Matthew Roh
Das P in Plz send teh codez!meine ich.
Darrylyeo
Oh warte jetzt zist falsch. Gesichtspalme
Matthew Roh
4

C 102 Bytes

i;f(char*s){i=strstr(s,"Plz send teh codez!");printf("%+d%s",i?'a'-'b':'b'-'a',i?" flag comment":"");}

Verwendet keine Ziffer oder eine von QWERTYUIOASDFGHJKLXVBN. Probieren Sie es online aus!

betseg
quelle
4

Netzhaut , 56 Bytes

(?!.*Plz send teh codez).+

.+
-$#+ flag comment
^$
+$#+

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 commentund 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 ist 1.

Wenn die Zeichenfolge noch leer ist (dh wir haben sie in der ersten Stufe gelöscht), ersetzen wir sie durch +1(erneut $#+für 1).

Martin Ender
quelle
2

C #, 77 Bytes

x=>x.Contains("Plz send teh codes!")?$"{'x'-'y'} flag comment":$"+{'x'/'x'}";

Nicht in der Lage zu sein, Ziffern zu verwenden, ist solch ein Schmerz.

apk
quelle
2

Python 2, 95 94 87 Bytes

Verwendet 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 .

b=ord('b')-ord('a')
print["+"+`b`,`-b`+" flag comment"][input()=="Plz send teh codez!"]

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!


a=ord     

Sei adie ord()eingebaute Funktion.

b=str(a('b')-a('a'))

Das ist wirklich so b=1.

print["+"+b, "-"+b+" flag comment"][input()=="Plz send teh codez!"]

Wenn die Aussage im zweiten Klammerpaar wahr ist, drucken Sie die zweite Zeichenfolge im ersten Klammerpaar. Andernfalls drucken Sie den ersten.

Anthony Pham
quelle
Sie können 5 Bytes sparen, indem Sie vermeiden str, und Sie entfernen den Speicherplatz nach print: repl
math junkie
@math_junkie Das schafft den Fehler, eine ganze Zahl mit einer Zeichenfolge zu verketten
Anthony Pham
Siehe den Link in meinem obigen Kommentar
Mathe-Junkie
Sie können 2 Bytes speichern, indem Sie a = ord entfernen und tatsächlich ord verwenden ... scheint zu speichern, aber es ist nicht ... Ich hatte das gleiche: D
offiziell am
Sie können zwei weitere mit einem Lambda sparen:lambda n,b=ord('b')-ord('a'):["+"+`b`,`-b`+" flag comment"][n=="Plz send teh codez!"]
Mathe-Junkie
2

Python 2/3, 81 76 68 Bytes

lambda x:["+%s","-%s flag comment"]["Plz send teh codez!"in x]%+True

Verwendet:

  • Alle Sonderzeichen (alles, was kein Leerzeichen, Zeilenumbruch (0x0a), Alphabet ohne Berücksichtigung der Groß- und Kleinschreibung oder Ziffer ist)
  • Beliebig von pzcm(ohne Berücksichtigung der Groß- und Kleinschreibung)
  • Beliebig von hten(ohne Berücksichtigung der Groß- und Kleinschreibung)
  • Irgendein von qwryuioasdfgjklxvb

Verwendet nicht:

  • Irgendein von QWRYUIOASDFGJKLXVB
  • Beliebige Ziffer (0-9)

-8 Bytes dank math_junkie

L3viathan
quelle
1
Speichern Sie 4 Bytes mit einer Array-Suche: TIO
Mathe-Junkie
1
Speichern Sie 4 weitere, indem Sie +anstelle von int: TIO
Mathe-Junkie
@math_junkie Tolle Ideen!
L3viathan
2

Python 3, 115 Bytes

if"p".upper()+"lz send teh codez!"in input():print("-"+str(len('a'))+" flag comment")
else:print("+"+str(len('a')))

Es werden keine Zahlen oder Großbuchstaben verwendet.

Probieren Sie es online aus

just_floating
quelle
Sie können mehrere Räume entfernen, wie zwischen if "p", codez!" inetc.
mbomb007
Durch das Zuweisen str(len('a'))zu einer Variablen können Sie einige weitere sparen. Es strkann auch vorteilhaft sein, die Nummer direkt in die Zeichenfolgen zu spleißen, anstatt anzurufen.
Julian Wolf
1

Common Lisp, 81 Bytes

Spezial + Kleinbuchstaben + 2 Großbuchstaben = 4 Zeichensätze

(format t"~:[+~s~;-~s flag comment~]"(search"Plz send teh codez!"(read-line))(*))

Ungolfed

(format t "~:[+~s~;-~s flag comment~]"
        (search "Plz send teh codez!" (read-line))
        (*))

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~]" ...)

#'formatist ähnlich fprintfoder sprintfin C. Das erste Argument tbezeichnet die Ausgabe als *standard-output*(standardmäßig STDOUT). Das nächste Argument ist die Formatzeichenfolge. "~" wird wie "%" in verwendet printf- 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 Argument nil(falsch) war. Bei jedem anderen Wert, wie tz. B. (true) oder einer Zahl (z. B.), wird der Wert fortgesetzt <b>. Das dritte zu formatierende Argument (das erste, nach tund 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 nach tund 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.

djeis
quelle
1

sh + sed, 72 Bytes

Verwendet Zeichensätze: 1, 3, 4, 5.

let ""
sed "s/.*Plz send teh codez!.*/-$? flag comment/
tz
s/.*/+$?/
:z"

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 von 1, da er nicht als arithmetischer Ausdruck ausgewertet werden kann.

z ist nur ein Etikett und kann durch jedes andere Zeichen ersetzt werden.

Maxim Mikhaylov
quelle
1

Mathematica, 265 Bytes

Das war schwer.

t[s_,n_]:=ToString@s~StringTake~{n};If[StringFreeQ[#,t[Head[a^b],i=-I I]<>"l"<>(s=t[RSolve[f[a+i]==f@a-i/Sqrt@a,f@a,a],(i+i+i+i)^(e=i+i+i)+i+e])<>" send teh "<>(k=t[i/Sin@x,e])<>"ode"<>s<>"!"],"+"<>t[i,i],"-"<>t[i,i]<>" flag "<>k<>"o"<>(n=Head[a b]~t~e)<>n<>"ent"]&

Lesbare Version:

t[s_, n_] := ToString@s~StringTake~{n}; 
If[StringFreeQ[#, 
   t[Head[a^b], i = -I I] <> 
    "l" <> (s = 
      t[RSolve[f[a + i] == f@a - i/Sqrt@a, f@a, 
        a], (i + i + i + i)^(e = i + i + i) + i + e]) <> 
    " send teh " <> (k = t[i/Sin@x, e]) <> "ode" <> s <> "!"], 
  "+" <> t[i, i], 
  "-" <> t[i, i] <> " flag " <> k <> "o" <> (n = Head[a b]~t~e) <> n <>
    "ent"] &

Verwendet Sonderzeichen hten, qwryuioasdfgjklxvbund QWRYUIOASDFGJKLXVB. Mathematica ohne Sonderzeichen wäre grundsätzlich unmöglich, und fast alle stringbezogenen Funktionen sind Stringin 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 Zahl I: i = -I I. Später definieren wir auch 3durch e = i+i+i.

Der Buchstabe Pwar ziemlich einfach: Mathematica behandelt a^bintern wie Power[a,b]folgt : Alles, was wir tun müssen, ist, den Kopf dieses ( Power) zu nehmen, ihn in eine Zeichenfolge umzuwandeln und den ersten (alias ith) Buchstaben zu nehmen. (Wir werden Dinge in Strings verwandeln und den n- ten Buchstaben viel nehmen, also definieren wir t[s_,n_]:=ToString@s~StringTake~{n}.) Der Buchstabe mist ähnlich: Nehmen Sie den Kopf von a b, das heißt Times, und holen Sie sich den dritten (akae th) Brief.

Der Buchstabe cist etwas schwieriger: Wir verwenden die trigonometrische Identität 1/Sin[x] == Csc[x](oder besser gesagt, i/Sin[x]da wir sie nicht verwenden können 1) und nehmen den dritten Buchstaben von Csc[x].

Der wirklich schwierige Teil ist der z. Um ein zu machen z, verwenden wir die HurwitzZetaFunktion (ja, wirklich). Wir erhalten das, indem wir die Wiederholungsrelation lösen RSolve[f[a + i] == f@a - i/Sqrt@a, f@a, a], die den String ergibt

"                             1            1
 {{f[a] -> C[1] + HurwitzZeta[-, a] - Zeta[-]}}
                              2            2"

davon ist das 68. Zeichen z. Wir bekommen die Nummer 68 als 4^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?

Kein Baum
quelle
1

Python 3.5 ( 137 102 98 87 85 94 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.

i=str(ord('b')-ord('a'))
print(['+'+i,'-'+i+' flag comment']['Plz send teh codez!'in input()])

Probieren Sie es online aus!

  • 35 Bytes gespart !!!!: Anscheinend hatte ich die Existenz der Funktion Upper () schon einmal vergessen (dumm mich !!)
  • 4 Bytes gespeichert: reduziert i = input () auf just input ()
  • 11 Bytes gespeichert !!!: Dank an Anthony-Pham (verwendet 'P', da es im Zeichensatz gültig ist)
  • 2 Bytes gespeichert: (a = ord entfernt; gelernt, dass das Kürzen einer Funktion nicht immer eine gute Idee ist !: D)
  • 9 Bytes hinzugefügt: Dank an math-junkie für den Hinweis, dass ich nicht +1 für Zeichenfolgen ohne 'Plz send the codez!' Vor.
Officialaimm
quelle
1
Nun, da Sie bereits p verwenden (und es wird ohne Berücksichtigung der Groß- und Kleinschreibung definiert), benötigen Sie das.upper()
Anthony Pham
1
Sie müssen +1für Eingaben ausgeben , die nicht enthaltenPlz send teh codez!
Mathe-Junkie
Vielen Dank für den Hinweis, dass ich das bis jetzt nicht wusste ...: D
offiziell am
0

Groovy, 78 Bytes

{a="a".length();it.contains("Plz send teh codez!")?-a+" flag comment":"+"+a}

Verwendet keine Zahlen oder Großbuchstaben.

Nur eine einfache Verwendung des ternären Operators. "a".length()ist eine Problemumgehung, um 1 zu erhalten

Wenn Sie

statische Methode
quelle
0

Swift (nicht wettbewerbsfähig) - 64 Bytes

print(x.contains("Plz send teh codez!") ?"-1 flag comment":"+1")

Leider 5 Zeichensätze verwendet, könnte es nicht ohne sie schaffen ... Vorschläge sind willkommen!

Mr. Xcoder
quelle