Vom Programmieren von Rätseln zum Codieren von Golf

74

Ihre Aufgabe ist es, ein Programm zu schreiben, das die genaue Zeichenfolge ausgibt Programming Puzzles(Zeilenumbruch optional). Wenn jedoch alle Leerzeichen, Tabulatoren und Zeilenumbrüche entfernt werden, erfolgt die Ausgabe Code Golf(Zeilenumbruch optional).

Ihre Byteanzahl ist die Anzahl des ersten Programms, wobei noch Leerzeichen vorhanden sind.

Anmerkungen

  • Die Leerzeichen in Code Golf und Programming Puzzles werden im Rahmen der Entfernung entfernt. Planen Sie daher entsprechend.

  • In Codierungen, in denen 0x09, 0x0A und 0x20 keine Tabulatoren, Zeilenumbrüche oder Leerzeichen sind, werden diese Zeichen entfernt.

  • Wenn Ihr Code ist

    42  $@ rw$
    @42
    

    dann muss das ausgeben Programming Puzzles. Auch in der gleichen Sprache,

    42$@rw$@42
    

    muss ausgeben Code Golf.

Das ist , also gewinnt der kürzeste Code in Bytes! Viel Glück!

programmer5000
quelle
3
wird der Raum in Code Golfauch entfernt, was ist mit dem in Programming Puzzles.
Colsw
2
Dies wird zumindest in Whirl und Whitespace unmöglich sein .
Ingenieur Toast
13
Wofür sind die engen Stimmen?
OldBunny2800
12
@ OldBunny2800 gute Frage. Ich frage das immer wieder, aber der Kommentar wird entfernt ...
programmer5000
12
Die engen Abstimmungen sind für das Fehlen von Ein- und Ausgängen und die Einschränkung der Formatierung von Ein- und Ausgängen. 100%, wenn Sie einen Abschnitt mit der Überschrift "Regeln" mit einer Aufzählung von Dingen hätten, von denen Sie glauben, dass sie in Bezug auf die Herausforderung offensichtlich sind, würden Sie 0 nahe Stimmen haben. Es dreht sich alles um die Präsentation mit CompSci-Leuten. Wenn wir uns eine scheinbar idiotische Frage überlegen, die uns vielleicht ein Byte erspart, werden wir versuchen, dieser Idiotie entgegenzuwirken, und Sie werden ein großartiger Frageschreiber sein.
Magic Octopus Urn

Antworten:

65

Python 2 , 50 Bytes

print["Code\40Golf","Programming Puzzles"][" ">""]

Probieren Sie es online!

Wenn alle Leerzeichen entfernt sind:

print["Code\40Golf","ProgrammingPuzzles"]["">""]

Versuchen Sie das online!

Danke an Stephen S für 3 Bytes und Erik the Outgolfer für 1

Mego
quelle
2
Verdammt, Ninja! Ich wollte gerade auf Antwort schreiben klicken! +1
HyperNeutrino
1
Ich denke du hast gerade das Gehirn meines Freundes gebrochen. Wie funktioniert das überhaupt?
Stevoisiak
11
@StevenVascellaro Es ist wirklich einfach. Im ersten Fall wird " ">""zurückgegeben True, da ein Leerzeichen lexikografisch größer als die leere Zeichenfolge ist. Im zweiten Fall wird "">""zurückgegeben False, da nichts größer als sich selbst sein kann. Trueund Falsesind eigentlich nur 1und 0jeweils nur in dem boolDatentyp statt intoder long. Im ersten Fall bleiben die Leerzeichen erhalten, sodass das Element bei Index 1 "Programming Puzzles"wörtlich zurückgegeben wird. Im zweiten Fall sind die Leerzeichen weg, daher das \x20im Element bei Index 0 "Code\x20Golf", um ein Leerzeichen beizubehalten.
Erik der Outgolfer
9
@StephenS Nein, da Python im Gegensatz zu JavaScript nicht von implizitem Casting besessen ist.
Mego
1
Wenn Pythons mangelnde Besessenheit stört.
John Dvorak
50

Python 2 , 48 47 Bytes

-1 Byte dank Erik dem Outgolfer

print' 'and'Programming Puzzles'or'Code\40Golf'

Probieren Sie es online!

print''and'ProgrammingPuzzles'or'Code\40Golf'

Probieren Sie es online!

Stange
quelle
9
Oh, ich wollte gerade meine Antwort darauf verbessern ...
Mego
22

05AB1E , 15 Bytes

”ƒËŠˆ”" "v”–±ÇÀ

Probieren Sie es online!

Erläuterung

”ƒËŠˆ”           # push "Code Golf"
      " "v       # for each character in the string " " do
          ”–±ÇÀ  # push "Programming Puzzles"
                 # implicitly output top of stack
Emigna
quelle
... Ich verstehe es einfach nicht. Verwendet dies die Wörterbuchkomprimierung oder so?
LegionMammal978
@ LegionMammal978 Ich bin mir ziemlich sicher, dass es das tut.
NoOneIsHere
@ LegionMammal978: Es wird in der Tat die Wörterbuchkomprimierung verwendet.
Emigna
5
@Emigna Okay, weil ich das letzte Mal nachgesehen habe, konnte keine dieser Zeichenfolgen in 4 Bytes passen: p
LegionMammal978
1
@ Draco18s: Kevin hat auf der Seite mit den Tipps, die Sie verwenden können , ein nettes Tutorial geschrieben , um eine bessere Vorstellung davon zu bekommen, wie man es verwendet.
Emigna
21

C 64 62 53 52 Bytes

f(){puts(*" "?"Programming Puzzles":"Code\40Golf");}

Probieren Sie es online!

Verwendet die Tatsache, dass C-Zeichenfolgen mit einem Nullzeichen enden

Mathe-Junkie
quelle
16

CJam , 38 Bytes

" ""Programming Puzzles""Dpef!Hpmg":(?

Probieren Sie es online! oder mit Leerzeichen entfernt

Erläuterung

" "                    e# Push this string.
"Programming Puzzles"  e# Push "Programming Puzzles".
"Dpef!Hpmg":(          e# Push "Dpef!Hpmg" and decrement each char, giving "Code Golf".
?                      e# If the first string is true (non-empty) return the second string,
                       e#   else return the third.

Ob sich Leerzeichen im Programm befinden oder nicht, bestimmt, ob die erste Zeichenfolge wahr oder falsch ist.

Geschäfts-Katze
quelle
27
Ihr Code ist traurig:(
Roman Gräf
14
Wenn Sie nicht druckbare Dateien verwenden möchten, "Bncd\x19Fnke":)verwenden Sie stattdessen fröhlichen Code (Ersetzen \x19).
Erik der Outgolfer
15

Jelly , 18 Bytes

“½ċṭ6Ỵ»ḷ
“Ñ1ɦ+£)G»

Probieren Sie es online!

Erläuterung

In dem Programm, wie es geschrieben wurde, ist die erste Zeile eine Hilfsfunktion, die niemals ausgeführt wird. Die zweite Zeile (die letzte im Programm) ist das Hauptprogramm und die komprimierte Darstellung der Zeichenfolge "Programming Puzzles"(die dann implizit gedruckt wird).

Wenn Sie den Zeilenumbruch entfernen, wird das Ganze zu einem großen Programm. “½ċṭ6Ỵ»ist die komprimierte Darstellung des Strings "Code Golf". wertet aus, ignoriert jedoch das Argument für die rechte Hand und lässt den gleichen Wert wie vor der Ausführung; Es kann verwendet werden, um Funktionen auf ihre Nebenwirkungen zu untersuchen (was ich zuvor getan habe), aber es kann auch verwendet werden, um wie hier Code effektiv auszukommentieren.

Interessanterweise ist die eigentliche Logik hier kürzer als der Eintrag 05AB1E, aber der Code insgesamt wird länger ausgegeben, weil der Stringkomprimierer diese bestimmten Strings weniger gut komprimiert.


quelle
Dies stellt sich als gültig heraus.
Erik der Outgolfer
Meines Wissens können einige dieser Zeichen mit einem Byte gespeichert werden, vorausgesetzt, es handelt sich um bekannte Codierungen. in UTF-8 bekomme ich 36 Bytes ... irre ich mich?
steffen
@steffen: Jelly verwendet eine eigene Zeichenkodierung , bei der alle 256 verwendeten Zeichen in einem einzigen Byte gespeichert werden können. (Der einzige Grund, warum dies so ist, anstatt eine bereits vorhandene Codierung zu verwenden, besteht in der Lesbarkeit (!). Sie könnten das Programm, das beispielsweise in Codepage 437 codiert ist, trivial schreiben, und es würde im Jelly-Interpreter ausgeführt werden, dies ist jedoch in der Regel der Fall viel schwerer zu lesen.)
13

Gelee , 17 Bytes

“Ñ1ɦ+£)G“½ċṭ6 Ỵ»Ṃ

Probieren Sie es online!

Wie es funktioniert

Wie in der anderen Jelly-Antwort, Ñ1ɦ+£)Gund ½ċṭ6Ỵcodieren Sie die Zeichenfolgen Programming Puzzles und Code Golf . Beginnt ein Zeichenfolgenliteral und trennt eine Zeichenfolge von einer anderen, während »die Art des Literal (wörterbuchbasierte Komprimierung) ausgewählt wird. Dies ergibt also

["Programming Puzzles", "Code Golf"]

Nimmt dann das Minimum und ergibt Code Golf .

Durch Hinzufügen eines Leerzeichens zwischen ½ċṭ6und erhalten wir jedoch eine völlig andere zweite Zeichenfolge, und das Literal wird zu ausgewertet

["Programming Puzzles", "caird coinheringaahing"]

Da caird coinheringaahing lexikographisch größer ist als Programming Puzzles , wird stattdessen die erste Zeichenfolge ausgewählt.

Dennis
quelle
Genau das gleiche mit“½ċṭ6Ỵ“Ñ1ɦ +£)G»Ṁ
Jonathan Allan
Meines Wissens kann keines dieser Zeichen unter der Annahme bekannter Codierungen mit einem Byte gespeichert werden. in UTF-8 bekomme ich 34 Bytes ... irre ich mich?
steffen
@steffen Jelly verwendet eine benutzerdefinierte Codepage , die jedes der 256 Zeichen, die es versteht, als einzelnes Byte codiert.
Dennis
@ Tennis danke für die Klärung.
steffen
13

Javascript, 46 43 42 Bytes

x=>" "?"Programming Puzzles":"Code\40Golf"

console.log((x=>" "?"Programming Puzzles":"Code\40Golf")())
console.log((x=>""?"ProgrammingPuzzles":"Code\40Golf")())

grg
quelle
5
Sie können \x20die erste Zeichenfolge durch ein Leerzeichen ersetzen .
Shaggy
Schlagen Sie mich, schön gemacht. Benötigt dies ein Trailing ;?
Ricdesi
@ricdesi nein, das stimmt nicht.
3
@ricdesi da dies codegolf ist, wenn das programm läuft, funktioniert es. ;s werden in JavaScript manchmal nicht benötigt.
Stephen
2
Sie können ersetzen \x20mit \40einem Byte :-) zu speichern
ETHproductions
10

Wolfram-Sprache, 62 Bytes

"Programming Puzzles"[ToExpression@"\"Code\\.20Golf\""][[0 1]]

Das Leerzeichen in [[0 1]]ist implizite Multiplikation, dies ist also äquivalent zu [[0]]. Ohne Leerzeichen geht 01es einfach 1. Der 0. und 1. Teil dieses Ausdrucks sind die von uns gewünschten Zeichenfolgen.

Eine andere Lösung von fraglicher Gültigkeit (44 Bytes, 2 von Kelly Lowder gespeichert):

"Programming Puzzles"["Code\.20Golf"][[0 1]]

Das \.20wird sofort durch ein Leerzeichen ersetzt, wenn es in eine Mathematica-Umgebung eingegeben wird. Es ist also nicht klar, ob es zusammen mit den anderen Leerzeichen entfernt wird.

Kein Baum
quelle
1
Sobald Sie dies in Mathematica einfügen (oder tippen) (cloudbasiert oder nicht), wird die Escape-Sequenz \:0020zu einem Leerzeichen und würde daher entfernt. Daher bin ich mir nicht sicher, ob dies qualifiziert ist. Auch \.20ist shorter.by zwei Zeichen. "Programming Puzzles"["Code"<>FromCharacterCode@32<>"Golf"][[01]]wird funktionieren.
Kelly Lowder
1
@ KellyLowder, hmm, das ist ein guter Punkt. Ich habe eine andere Lösung hinzugefügt, die dieses Problem vermeiden sollte. (Danke für den \.20Vorschlag - wie haben Sie das gefunden? Ich dachte, ich hätte die gesamte Dokumentation
Kein Baum
1
Ich fand das, \.20indem ich einen Tippfehler machte. Scheint nur für zweistellige Zeichencodes zu funktionieren. Ich glaube nicht, dass es in der Dokumentation steht.
Kelly Lowder
8

Excel - 56 Bytes

=IF(""=" ","Code"&CHAR(32)&"Golf","Programming Puzzles")

Sehr ähnlich zu den meisten anderen Antworten ... nichts Besonderes.

qoou
quelle
8

Haskell, 48 Bytes

a _="Programming Puzzles";a4="Code\32Golf";f=a 4
a_="ProgrammingPuzzles";a4="Code\32Golf";f=a4

Definiert eine Funktion, fdie den entsprechenden String zurückgibt.

Als Referenz ist die alte Version:

Haskell, 49/47 Bytes

f""="Code\32Golf";f(_)="Programming Puzzles";f" "

mit Leerzeichen entfernt

f""="Code\32Golf";f(_)="ProgrammingPuzzles";f""

Zwei einfache Musterübereinstimmungen. (_)stimmt mit allen Mustern überein. Sie können die Version ohne Leerzeichen um ein Byte verbessern, indem Sie das zweite Muster als f" "=/ definieren f""=. Dies gibt jedoch die Warnung "Musterübereinstimmung ist redundant" aus.

Alternative Lösung mit gleicher Byteanzahl:

last$"Code\32Golf":["Programming Puzzles"|" ">""]
last$"Code\32Golf":["ProgrammingPuzzles"|"">""]
nimi
quelle
7

Ohm , 33 32 Bytes

Verwendet die CP437-Codierung.

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀
▀4>~H├MS░l╬δ

Probieren Sie es online! oder versuchen Sie es ohne Leerzeichen

Erläuterung

Mit Leerzeichen:

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀    Main wire

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀    Push "Programming Puzzles" (compressed string)
                       Implicitly output the top stack element


▀4>~H├MS░l╬δ           Helper wire (never called)

Ohne Leerzeichen:

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀▀4>~H├MS░l╬δ    Main wire

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀                Push "Programming Puzzles" (compressed string)
                   ▀4>~H├MS░l╬δ    Push "Code Golf" (compressed string)
                                   Implicitly output top stack element
Geschäfts-Katze
quelle
Ich bin so froh, dass ich endlich die Saitenkomprimierung beendet habe!
Nick Clifford
1
@NickClifford Das Merkwürdige, das mir auffiel, war, dass es Code Golfbeim Komprimieren länger wurde. Ich denke, das liegt an den Hauptstädten? In jedem Fall ist es immer noch kürzer als das normale Schreiben, da ich hier kein buchstäbliches Leerzeichen verwenden kann.
Business Cat
Ja, Smaz ist irgendwie komisch.
Nick Clifford
Fühlen Sie sich frei, mich im Chat anzusprechen, wenn Sie Fragen oder Wünsche zu Ohm haben.
Nick Clifford
7

Japt , 29 Bytes

Mit Leerzeichen:

`Co¸{S}Golf`r `PžgŸmÚÁ Puzz¤s

Probieren Sie es online!

Ohne Zwischenraum:

`Co¸{S}Golf`r`PžgŸmÚÁPuzz¤s

Probieren Sie es online!


Dies nutzt die Tatsache aus, dass in Japt ein Leerzeichen einen Methodenaufruf schließt. Mit Leerzeichen entspricht der Code ungefähr diesem JavaScript-Code:

("Code"+(S)+"Golf").r(),"Programming Puzzles"

Dies wird als JavaScript ausgewertet und das Ergebnis wird an STDOUT gesendet. Da ist der letzte Ausdruck"Programming Puzzles" , wird diese Zeichenfolge gedruckt.

Ohne Leerzeichen entspricht der Code ungefähr:

("Code"+(S)+"Golf").r("ProgrammingPuzzles")

(Wenn Sie es bis jetzt noch nicht verstanden haben, ist die SVariable ein einzelnes Leerzeichen.) .r()Wenn für eine Zeichenfolge ein Argument angegeben wird, werden alle Instanzen dieses Arguments aus der Zeichenfolge entfernt. Da "Code Golf"nicht enthalten "ProgrammingPuzzles", gibt es "Code Golf"unverändert zurück, die dann an STDOUT gesendet wird.

ETHproductions
quelle
Ich habe nicht einmal daran gedacht, zu ersetzen. Schön!
Tom
Meines Wissens können einige dieser Zeichen mit einem Byte gespeichert werden, vorausgesetzt, es handelt sich um bekannte Codierungen. in UTF-8 bekomme ich 36 Bytes ... irre ich mich?
steffen
@steffen Japt verwendet die ISO-8859-1-Codierung, bei der jedes Zeichen ein Byte darstellt. Aber einige der Zeichen wären in diesem Programm nicht druckbar, deshalb habe ich hier die Windows-1252-Codierung verwendet (tatsächlich wurde sie von TIO
automatisch generiert
6

Brachylog , 44 Bytes

" "Ṣ∧"Programming Puzzles"w|"Code"wṢw"Golf"w

Probieren Sie es online!

Erläuterung

" "Ṣ                                           If " " = Ṣ (which is itself " ")
    ∧"Programming Puzzles"w                    Write "Programming Puzzles"
                           |                   Else
                            "Code"w            Write "Code"
                                   Ṣw          Write " "
                                     "Golf"w   Write "Golf"
Tödlich
quelle
1
Durchgestrichene 44 ist noch 44 :( Bearbeiten Sie &nbsp;auf beiden Seiten zu beheben :)
HyperNeutrino
@HyperNeutrino Es ist nicht durchgestrichen, 44 ist die Länge mit Leerzeichen und 42 ohne.
Fatalize
Oh. Hoppla. Nun, es ist zu ähnlich, so dass ich es nicht beurteilen konnte, ohne auf den Preisnachlass zu achten, indem ich in die Bearbeitung ging.
Macht
5

Alice , 44 Bytes

/"floG!"t"edoC"#
 /"selzzuP gnimmargorP"d&o@

Probieren Sie es online!

Ohne Leerzeichen:

/"floG!"t"edoC"#/"selzzuPgnimmargorP"d&o@

Probieren Sie es online!

Erläuterung

Im ersten Programm /leiten die beiden Spiegel den Befehlszeiger auf die zweite Zeile um. "selzzuP gnimmargorP"Drückt die erforderlichen Codepunkte in umgekehrter Reihenfolge, ddrückt die Stapeltiefe und &odruckt so viele Bytes. @Beendet das Programm.

Ohne das Leerzeichen steht das Programm in einer einzigen Zeile. In diesem Fall kann sich der Anweisungszeiger nicht im Ordinal-Modus bewegen, sodass die Befehle /effektiv nicht ausgeführt werden (technisch gesehen bewegt sich die IP nur einen Schritt lang nicht, dieselbe /wird erneut ausgeführt, und die IP wird wieder im Kardinal-Modus angezeigt ). Wenn wir diese also aus dem Programm streichen, sieht es so aus:

"floG!"t"edoC"#"selzzuPgnimmargorP"d&o@

Um das Leerzeichen Code Golfeinzufügen, verwenden wir stattdessen ein Ausrufezeichen und dekrementieren es mit t. Nachdem wir alle Codepunkte auf dem Stapel haben, #überspringt der nächste Befehl, der die gesamte zweite Zeichenfolge ist. d&oAnschließend wird der Stapel erneut gedruckt und @das Programm beendet.

Martin Ender
quelle
Sie müssen Golf spielen (durchgestrichen 44 ist 44)
MilkyWay90
5

PHP, 44 Bytes

ternärer Operator

<?=" "?"Programming Puzzles":"Code\x20Golf";

PHP, 51 Bytes

Kommentar

<?=/** /"Code\x20Golf"/*/"Programming Puzzles"/**/;

PHP, 57 Bytes

Array-Schalter

<?=["Code\x20Golf","Programming Puzzles"][(ord("
")/10)];
Jörg Hülsermann
quelle
5

Common Lisp (SBCL), 52 Byte

(format`,t"~[Programming Puzzles~;Code~@TGolf~]"0 1)

Druckt Programming Puzzles

(format`,t"~[ProgrammingPuzzles~;Code~@TGolf~]"01)

Druckt Code Golf

Ungolfed:

(format t "~[Programming Puzzles~;Code Golf~]" 0 1)

Erklärung:

Der Trick kommt im Grunde davon, wie #'formatin Common Lisp funktioniert.

In CL können die meisten Leerzeichen weggelassen werden, vorausgesetzt, es besteht keine Unklarheit darüber, wo Token beginnen oder enden. Der erste Trick war das Trennen der Symbole formatund t. Ich musste das formatSymbol eindeutig beenden, ohne zu ändern, wie tes interpretiert wurde. Glücklicherweise beendet `in CL das vorhergehende Token, bevor es verarbeitet wird, und ,hebt den Effekt von` (`auf, um das Templating zu implementieren, wobei der nächste folgende Ausdruck" in Anführungszeichen "gesetzt" wird, wobei jedoch jedem Unterausdruck ein vorangestelltes a vorangestellt wird, ausgewertet wird und Das in der Vorlage enthaltene Ergebnis ist also so gut wie ein No-Op.

Das dritte Argument für formatist die Vorlagenzeichenfolge. formatähnelt printf in C, hat jedoch viel leistungsstärkere Formatierungsanweisungen und verwendet ~, um sie anstelle von% anzugeben. Mit ~ [und ~] können Sie zwischen mehreren Druckoptionen wählen, mit ~; sie trennen. Ein zusätzliches Argument wird an format übergeben - der numerische Index, von dem Sie einen ausdrucken möchten. Um sicherzustellen, dass das "" in Code Golf erhalten bleibt, habe ich die Tabellierungsanweisung ~ T verwendet, mit der Leerzeichen eingefügt werden, um im Allgemeinen Text in Spalten auszurichten. ~ @ T ist eine Variation, die nur eine bestimmte Anzahl von Leerzeichen einfügt, standardmäßig 1.

Schließlich gibt es zwei Argumente für Format-0 und 1. Bevor das Leerzeichen entfernt wird, wird die 0 von ~ [~; ~] verwendet, um "Programming Puzzles" auszuwählen, und das zusätzliche Format-Argument (die 1) wird fallengelassen (I'm Ich bin mir nicht sicher, wie es Standard ist, zusätzliche Formatargumente zu löschen, aber dies funktioniert bei Steel Bank (Common Lisp). Nachdem das Leerzeichen entfernt wurde, gibt es nur ein Argument (01), das stattdessen "Code Golf" auswählt.

djeis
quelle
1
+1, nur eine Sache: "Aber jeder Unterausdruck, dem ein vorangestelltes a vorangestellt ,ist, wird ausgewertet und gespleißt in" Ist das nicht ,@notwendig für das Spleißen?
PrzemysławP
"gespleißt" ist zugegebenermaßen ein schlechter Begriff dafür. Technisch betrachtet, ,wird der nächste Ausdruck ausgewertet und das Ergebnis in die Vorlage aufgenommen, während ,@davon ausgegangen wird, dass der Ausdruck in einer Liste ausgewertet wird und der Inhalt dieser Liste direkt in die Vorlage aufgenommen wird. Traditionell wird in der Lisp-Community ,@"Spleißen" genannt, aber ich bin mir nicht sicher, ob das die naheliegendste Wahl ist. Ich werde versuchen, es ein bisschen neu zu formulieren.
djeis
4

C # 88 81 70 63 Bytes

Func<string>@a=()=>" "==""?"Code\x20Golf":"Programming Puzzles";

Mit Leerzeichen entfernt:

Func<string>@a=()=>""==""?"Code\x20Golf":"ProgrammingPuzzles";

Vielen Dank an BrianJ, der mir gezeigt hat, wie kein Leerzeichen zwischen einem Methodenrückgabetyp und dem Methodennamen steht, PeterTaylor für das Speichern von 7 bis 18 Bytes und Patrick Huizinga für das Speichern von 7 Bytes.

Gleiche Methode wie alle anderen auch wirklich, könnte dies technisch ungültig betrachtet werden , da das Verfahren, keinen Rückgabetyp für die Methode angeben , aber es hat zwischen dem Rückgabetyp und dem Methodennamen Leerzeichen sein.

Skidsdev
quelle
1
Sie können dem Funktionsnamen ein Präfix voranstellen @, so dass Sie void@a...den Kompilierungsfehler "kein Rückgabetyp" haben und vermeiden (fügt jedoch auch Bytes hinzu :()
Brian J
.Length<1spart ein Byte; \u0020spart sechs, wenn ich richtig gezählt habe; und Sie können eine gültige Antwort geben (und gleichzeitig einige Bytes sparen), indem Sie ein Lambda anstelle einer Funktion der obersten Ebene senden. Func<string>a=()=>...
Peter Taylor
@BrianJ Hmm, wusste das nicht, frage mich, warum das aus der Sicht eines Compilers funktioniert. Wie auch immer, es kann Bytes verlieren, aber es macht diese Antwort auch technisch nicht konkurrierend, es lohnt sich also. Vielen Dank!
Skidsdev
@Mayube the @wird hauptsächlich verwendet, wenn Sie ein reserviertes Wort als Variablennamen verwenden müssen (das Äquivalent steht []in VB.NET (und MS SQL Server) für "umgeben").
Brian J
1
Ja, die Zeichenfolge muss zurückgegeben werden. Aber wenn Sie =>stattdessen returnverwenden, brauchen Sie keine Leerzeichen. (Und selbst wenn Sie verwenden return, können Sie return(...)).
Peter Taylor
4

Java 8, 74 50 48 Bytes

()=>" "==""?"Code\040Golf":"Programming Puzzles"
Khaled.K
quelle
@NonlinearFruit Sie haben Recht, ich habe das geändert, um nicht kompetent zu sein
Khaled.K
1
Ich denke nicht, dass das Drucken eine Anforderung ist, also könntest du den String einfach zurückgeben. Ich habe es nicht getestet, aber der ==Operator sollte auch funktionieren()=>""==""?"Code\u00A0Golf":"Programming Puzzles"
NonlinearFruit
1
\u00A0-> \040für eine 2 Byte Einsparung.
Poke
3

PowerShell , 56 Byte

('Programming Puzzles',('Code'+[char]32+'Golf'))[!(' ')]

Probieren Sie es online!

Ziemlich einfach würde ich sagen, aber es wird die Arbeit erledigt

Sinusoid
quelle
3

R, 50 Bytes

Ich denke, das ist das gleiche wie diese Javascript-Antwort und im Grunde die gleiche Idee wie alle anderen.

`if`(' '=='','Code\x20Golf','Programming Puzzles')
Giuseppe
quelle
3

dc , 50

[pq]sm[Programming Puzzles]dZ19=m[Code]n32P[Golf]p

Probieren Sie es online aus .

[ ]definiert einen String - Zmisst seine Länge. Wenn die Länge 19 ist, enthält sie ein Leerzeichen und das im m-Register gespeicherte Makro wird aufgerufen, das gedruckt Programming Puzzlesund beendet wird. Ansonsten Code Golfwird gedruckt.

Digitales Trauma
quelle
Könnten Sie einen Link zum DC-Interpreter / docs / github erstellen?
Programmierer5000
@ programmer5000 Wählen Sie unter TIO einfach dc aus und klicken Sie auf den Namen der Sprache.
Dennis
@Dennis danke, ich wusste gar nicht, dass TIO das macht!
Programmierer5000
3

> <> , 47 45 Bytes

! v"floG!"1-"edoC"!
o<>"selzzuP gnimmargorP">

Probieren Sie es online!

Dank Randomra für -2 (kluge zwei !s, so dass ich nur eine verwenden kann >o<.)

Der Code ruft "Flog! Flog! Flog!" und ähnelt einem Fisch.

Erik der Outgolfer
quelle
3

T-SQL, 96 82 81 67 Bytes

print+iif(len(' x')=2,'Programming Puzzles','Code'+char(32)+'Golf')

Versuchen Sie es online | Ohne Zwischenraum

Alte Version (96 Bytes):

select(case'x'when(replace(' ',' ','x'))then'Programming Puzzles'else'Code'+nchar(32)+'Golf'end)
mbomb007
quelle
Gute Arbeit, Sie können auf 67 kommen, indem Sie die äußeren Parens verlieren und den Zustand aufiif(len(' x')=2
BradC
@BradC Schließen, aber der äußere Paren verhindert, dass danach ein Leerzeichen benötigt wird print. Ich habe +stattdessen eine verwendet und es hat funktioniert.
mbomb007
Muss das Falsche eingefügt und gezählt haben. Und ich wusste es auch nicht, aber das Plus war der erste Charakter, den ich ausprobierte und es funktionierte.
mbomb007
3

Perl 5 , 43 41 Bytes

say" "?"Programming Puzzles":Code.$".Golf

Probieren Sie es online!

Verwendet die Tatsache, dass ' 'in Perl wahr und ''falsch ist. Die $"Variable ist standardmäßig auf ein Leerzeichen gesetzt.

Vielen Dank an @NahuelFouilleul für das Entfernen von zwei Bytes.

Chris
quelle
vielleicht spät, aber "Code$\"Golf"ist kürzer und Code.$".Golfauch
Nahuel Fouilleul
@NahuelFouilleul Ja, ich war ziemlich neu, als ich diese Antwort schrieb. Trotzdem danke!
Chris
2

Befunge , 76 Bytes

" "0`#v_"floG"84*"edoC",,,,,,,,,@
,,,,,@>"selzzuP gnimmargorP",,,,,,,,,,,,,,

Probieren Sie es online!

Nicht die kompakteste Lösung, aber es ist ziemlich schwierig, Befunge-Code ohne Leerzeichen zu schreiben.

Ganz am Anfang wird ein Leerzeichen mit 0 verglichen. Wenn es größer ist, wird es in die unterste Zeile verschoben. Wenn dies nicht der Fall ist, bleibt es in der ersten Zeile, wenn Sie Leerzeichen durch nichts ersetzen.


quelle
Was machen die ,s?
programmer5000
@ programmer5000 Jeder druckt ein Zeichen.
Martin Ender
Ein Tipp zum Drucken einer großen Anzahl von Zeichen, bis Sie eine 0 erreichen, ist zu tun, >:#,_wodurch Sie viele Bytes sparen könnten
MildlyMilquetoast