var QUESTION_ID=113448,OVERRIDE_USER=64499;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){var F=function(a){return a.lang.replace(/<\/?a.*?>/g,"").toLowerCase()},el=F(e),sl=F(s);return el>sl?1:el<sl?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Antworten:
ArnoldC ,
299283 BytesDies gibt
1
(was wahr ist) für eine ungerade Eingabe und0
(was falsch ist) für eine gerade Eingabe aus.Probieren Sie es online!
" Nun, das ist der Plan " (Versuch einer Erklärung)
Der Code liest die Eingabe in die Variable
i
, ersetzt sie durch das Ergebnis von Modulo 2 und druckt sie dann aus.quelle
BULLSHIT
YOU HAVE NO RESPECT FOR LOGIC
GET TO THE CHOPPER
GET YOUR ASS TO MARS
...Ich habe keine Worte.Brainfuck , 8 Bytes
Die Eingabe ist unär. Die Ausgabe ist die 1 (wahr) für ungerade Zahlen und NUL (falsch) für gerade Zahlen.
Probieren Sie es online!
Wie es funktioniert
Wir beginnen mit dem Inkrementieren der aktuellen Zelle
+
, um in die while-Schleife eintreten zu können[,>,]
.,
Liest in jeder Iteration ein Byte von STDIN,>
rückt in die Zelle rechts vor und,
liest dann ein weiteres Byte von STDIN. Wenn die Eingabe erschöpft ist, setzt der Interpreter (der auf TIO) die Zelle stattdessen auf NUL . In diesem Fall ist die Bedingung der while-Schleife nicht mehr erfüllt und wir brechen aus der Schleife aus.Sei n die Eingabe-Ganzzahl. Wenn es eine gerade Anzahl von Eingangsbytes ist - das heißt, wenn n gerade ist - die erste n / 2 Iterationen werden zwei Lese 1 ‚s, und die nächste Iteration zwei Lese NUL ‘ s, so dass das Band wie folgt.
<.
Wiederholt eine Zelle und druckt ihren Inhalt, wobei ein NUL- Byte an STDOUT gesendet wird.Wenn es jedoch eine ungerade Anzahl von Eingangsbytes ist, die erste (n - 1) / 2 Iterationen werden zwei Lese 1 ‚s, und die nächste Iteration wird man gelesen 1 und ein NUL , so dass das Band wie folgt.
<
wird nun zu einer Zelle zurückkehren, die das Byte / Zeichen 1 enthält , das.
gedruckt wird.quelle
Mathematica, 4 Bytes
Gibt
True
für ungerade Eingaben undFalse
für gerade Eingaben, wer wusste?Es gibt auch
EvenQ
, aber wer würde das alles schreiben wollen?quelle
2∣#&
funktioniert auchQ
?Taxi ,
1.4821.2901.0631.0291.009 BytesIch habe noch nie zuvor ein Programm in Taxi geschrieben und ich bin ein Anfänger in der allgemeinen Programmierung, daher gibt es wahrscheinlich bessere Möglichkeiten, dies zu tun. Ich habe nach Fehlern gesucht und es geschafft, ein bisschen Golf zu spielen, indem ich verschiedene Routen ausprobiert habe, die das gleiche Ergebnis haben. Ich begrüße jede Überarbeitung.
Gibt
0
für gerade und1
für ungerade zurück.Probieren Sie es online!
Du hast recht, das ist schrecklich ohne Zeilenumbrüche zu lesen. Hier ist eine formatierte Version:
Hier ist mein bester Versuch, die Logik zu erklären:
Nicht zurück zum Taxi Garage verursacht Ausgang STDERR , aber ich bin mit dieser Geldbuße .
quelle
Retina , 8 Bytes
Eine Retina-Antwort für die Dezimaleingabe. Dies ist auch eine einfache Regex-Lösung, die in fast jedem Regex-Geschmack funktioniert. Stimmt mit
1
geraden Eingaben überein (und wird gedruckt0
) und stimmt nicht mit ungeraden Eingaben überein (und wird gedruckt ).Probieren Sie es online!
Eine Alternative, auch für 8 Bytes, verwendet eine Transkriptionsstufe, um alle geraden Ziffern auf die
x
erste zu setzen (da Transkriptionsstufen eine integrierte Funktion für gerade / ungerade Ziffern haben):Natürlich wäre das kürzeste Eingabeformat (sogar kürzer als unär ) in diesem Fall binär, wobei eine einfache Regex von
0$
ausreichen würde. Da es bei der Herausforderung im Wesentlichen darum geht, die am wenigsten signifikante Binärziffer zu finden, scheint die Binäreingabe die eigentliche Herausforderung zu umgehen.quelle
Python,
11 bis10 Bytes-1 Byte dank Griffin
Probieren Sie es online!
Bei bitweiser Verwendung
and
wird0
für gerade und1
für ungerade zurückgegebenquelle
1 .__and__
ist ein Zeichen kürzerLOLCODE, 67 Bytes
Funktion, die
WIN
true zurückgibt , wenn number gerade ist, andernfallsFAIL
false.Mit anrufen
C"123"
.quelle
MATL ,
53 BytesWeil Builtins langweilig sind
Dies gibt eine Matrix von Nicht-Null-Werten (die wahr ist) für gerade Eingaben und eine Matrix mit einer Null in ihrem unteren rechten Eintrag (die falsch ist) für ungerade Eingaben aus.
Probieren Sie es online! Der Fußzeilencode ist eine
if-else
Verzweigung, um die Richtigkeit oder Falschheit des Ergebnisses zu veranschaulichen. Wenn Sie diese Fußzeile entfernen, wird die Matrix implizit angezeigt.Erläuterung
Betrachten Sie die Eingabe
5
als Beispielquelle
Java 8, 8 Bytes
Probieren Sie es hier aus.
Java 7, 30 Bytes
Probieren Sie es hier aus.
Ausgänge
true
für gerade undfalse
ungerade ZahlenWenn
1/0
statt erlaubt wäretrue/false
(ist es nicht, wenn man die Anzahl der Stimmen hier berücksichtigt ):n->n%2
int c(int n){return n%2;}
quelle
int o(int n){return java.util.stream.IntStream.of(n).map(n->n%2).filter(n==0).findAny().isPresent();}
Piet, 15 Codels / 16 Bytes
Online-Dolmetscher hier verfügbar.
Dieses Programm gibt 0 zurück, wenn die Eingabe gerade ist, und 1, wenn die Eingabe ungerade ist.
Der obige Text repräsentiert das Bild. Sie können das Bild generieren, indem Sie es in das Textfeld auf der Interpreterseite einfügen. Der Einfachheit halber habe ich das folgende Bild bereitgestellt, in dem die Codelgröße 31 Pixel beträgt. Das Raster dient der Lesbarkeit und ist nicht Bestandteil des Programms.
Erläuterung
Dieses Programm verwendet das eingebaute Modulo, um zu bestimmen, ob die Eingabe gerade oder ungerade ist.
Die dunkelblauen Codels unten links werden nie besucht und können in eine andere Farbe als die Farbe eines benachbarten Codels geändert werden. Ich habe dunkelblau gewählt, da ich denke, dass es mit dem Rest des Programms gut aussieht. Der schwarze Code oben links könnte auch weiß sein, aber keine andere Farbe. Ich habe schwarz gewählt, da ich finde, dass es schöner aussieht.
Ich habe das Programm sowohl in Bild- als auch in Textform zur Verfügung gestellt, da es keinen klaren Konsens darüber gibt, wie Piet-Programme bewertet werden sollen. Gerne können Sie die Metadiskussion abwägen .
quelle
Brainfuck , 14 Bytes
Die Eingabe und Ausgabe erfolgt als Zeichencode gemäß diesem Meta .
Der Byte-Wert 1 entspricht einer ungeraden Zahl und 0 einer geraden Zahl.
Probieren Sie es online!
quelle
JavaScript, 6 Bytes
Eine anonyme Funktion:
Alternativ mit gleicher Länge:
Beide werden zurückkehren,
0|1
was die Anforderung antruthy|falsey
Werte erfüllen sollte .Probieren Sie beide Versionen online aus
quelle
0|1
sind, nicht wahr? @TheLethalCoderJapt , 1 Byte
Gibt
1
für gerade Zahlen und0
für ungerade Zahlen zurück .Probieren Sie es online!
Erläuterung
Eines der Hauptmerkmale von Japt ist, dass Funktionen im Gegensatz zu den meisten Golfsprachen keine feste Arität haben. Das heißt, jede Funktion kann eine beliebige Anzahl von Argumenten akzeptieren. Dies bedeutet, dass Sie manchmal Argumente weglassen können und Japt erraten wird, was Sie wollen.
v
on numbers ist eine Funktion, die ein Argument akzeptiert und zurückgibt,1
wenn die Zahl durch das Argument teilbar ist0
. Zum Beispiel:Dieses Programm wird ausgegeben,
1
wenn die Eingabe durch 3 teilbar ist,0
andernfalls. Es kommt einfach so vor, dass das Standardargument lautet2
, wodurch diese Herausforderung in einem einzigen Byte gelöst wird.Alternative 1-Byte-Lösung:
¢
konvertiert die Eingabe in eine Base-2-Zeichenfolge. Das-h
Flag gibt das letzte Zeichen aus der Zeichenfolge zurück.Probieren Sie es online!
quelle
Brainfuck , 12 Bytes
Dies erfordert einen Dolmetscher mit einem kreisförmigen Klebeband und Zellen, die sich umschließen. Die auf TIO verfügt über 65.536 8-Bit-Zellen und erfüllt die Anforderungen.
I / O ist in Bytes. Ungerade Eingaben werden auf 0x00 (falsch) abgebildet, gerade Eingaben auf ein Byte ungleich Null (wahr).
Probieren Sie es online!
Wie es funktioniert
Wir beginnen mit dem Lesen eines Eingangsbytes
,
und dem Addieren von 2 zu seinem Wert mit++
. Wir werden später sehen, warum eine Erhöhung notwendig ist.Als Nächstes geben wir eine Schleife ein, die zur Zelle rechts vorrückt, fügen ihr 2 hinzu und wiederholen den Vorgang, es sei denn, dies setzt den Wert der Zelle auf 0 .
Anfangs halten alle Zellen außer der Eingabezelle 0 . Wenn der Eingang ungerade ist, wird er durch Hinzufügen von 2 niemals auf Null gesetzt. Nachdem das Band 127- mal durchlaufen wurde, setzt die nächste Iteration der Schleife die Zelle rechts von der Eingabezelle auf 128 × 2 = 0 (mod 256) , wodurch die Schleife beendet wird.
>++
Wiederholt den Schleifenkörper ein weiteres Mal, sodass die nächste Zelle ebenfalls auf Null gesetzt und dann mit gedruckt wird.
.Wenn andererseits die Eingabe n ist und n gerade ist, setzt der Code vor der Schleife die Eingabezelle auf n + 2 . Nach zweimaligem Durchlaufen des Bandes (256 - (n - 2)) / 2 = (254 - n) / 2 erreicht die Eingabezelle 0 und die Zelle rechts davon enthält den Wert (254 - n) / 2 × 2 = 254 - n . Nach der Zugabe von 2 mit
>++
,.
drucken 256 - n = -n (mod 256) , die nicht Null ist , da n ungleich Null ist.Schließlich ist zu beachten, dass im zweiten Fall 258-n = 2-n (mod n) ausgegeben würde, wenn die Eingabe vor der Schleife nicht inkrementiert würde, da eine weitere Schleife um das Band erforderlich wäre, um die Eingabezelle auf Null zu setzen. Das Programm würde also für die Eingabe 2 fehlschlagen .
quelle
Sinclair ZX81 BASIC
124 Bytes114 Bytes109 Bytes5750 tokenized BASIC BytesNach den Kommentaren von Adám ist hier der neueste Release Candidate:
Es wird jetzt
PRINT
1
für gerade und0
für ungerade. Zero wird beendet.Hier sind ältere Versionen der symbolischen Auflistung zu Referenzzwecken:
Hier ist die alte (v0.01) Auflistung, damit Sie die Verbesserungen sehen können, die ich vorgenommen habe, da diese neue Auflistung nicht nur kleiner, sondern auch schneller ist:
Und hier ist v0.02 (mit Sinclair-Unterzeichenfolgen):
quelle
PRINT (A-2*INT A/2)/A
?0
keinTRUE
oder erzeugenFALSE
soll. Daher0
sollte er kein Ergebnis liefern. Dann musste ichSTOP
das Programm anpingen. Ich habe die ursprüngliche Frage wahrscheinlich etwas zu wörtlich interpretiert, da sie von @SIGSEGV gepostet wurde. Ja, man kann optimieren und umgestalten, Sie haben Recht.05AB1E , 1 Byte
Ziemlich selbsterklärend. Kehrt zurück
a % 2 == 0
Probieren Sie es online!
quelle
É
ist meiner persönlichen Meinung nach eine bessere Wahl; Scherz.É
Rückgaben ausa % 2 == 1
.Netzhaut, 3 Bytes
Der abschließende Zeilenumbruch ist erheblich. Nimmt unäre Eingaben auf. Gibt 1 für ungerade Zahlen aus, nichts für gerade Zahlen. Probieren Sie es online!
quelle
C ++, 25 Bytes
Dies definiert eine Variablenvorlage ( ein funktionsähnliches Konstrukt ) mit einem Wert, der der bitweisen Operation entspricht
input&1
.0
für gerade Werte1
für ungerade Werte. Der Wert wird zur Kompilierungszeit berechnet.Benötigt C ++ 14.
Probieren Sie es online!
quelle
int o(int v){return v&1;}
) würde die gleiche Menge an Bytes benötigen , mit dem Unterschied, dass der Wert zur Laufzeit berechnet würde.main()
das Programm ohne ein ähnliches Konstrukt auch nur zu a kompiliert würdereturn 0
oder überhaupt nicht kompiliert werden könnte. Dies widerspricht dem Meta-Post, auf den ich in dieser Antwort verlinkt habe.[](int x){return x%2;}
Versuchen Sie es onlinePyth,
32 BytesIch hab es gemacht. Ich habe das Ungolfable gespielt. Diesmal ist es eine nicht triviale Lösung, die es geschafft hat, das letzte Byte zu bekommen!
Wahrheit über gerade Werte (ohne 0, aber das ist nicht positiv ...).
Erläuterung:
Zum Beispiel,
!!2 = !0 = 1
, und!!!3 = !!0 = !1 = 0
Ich werde meine Bibliothek mit 3-Byte-Lösungen hier unten aufbewahren.
"Es gibt eine andere Antwort mit mehreren 3-Byte-Lösungen, die jedoch noch lange nicht vollständig ist. Fügen wir noch ein paar hinzu:
[0,1]
Indiziert die Liste modular und gibt bei ungeraden Eingaben die Wahrheitswerte an.Steht 2 in der Primfaktorisierung der Eingabe? (Wahrheit auf gerade)
Ist der GCD 2 und der Eingang 2? (Wahrheit auf gerade)
Wird die Eingabe durch XOR-Verknüpfung mit 1 nicht verringert? (Wahrheit auf gerade)
Grundsätzlich gilt:
Q == Q*-1^Q
Q ist die Eingabe, erfolgt jedoch über eine Schleife. (Wahrheit auf gerade)Das gleiche wie oben.
Wird übersetzt in
Q <= -Q^Q
(Wahrheit auf gerade)Beachten Sie, dass jede der oben genannten Lösungen, bei denen
g
es<
um das Umdrehen von Wahrheitsfehlern geht, funktioniert.)quelle
C #, 8 Bytes
Kompiliert zu a
Func<int, bool>
.Oder wenn eine anonyme Funktion nicht erlaubt ist, diese Methode für 21 Bytes:
quelle
if (1)
nicht kompilierbar.if (1)
in ihrem code?if (x)
als wahr ausgewertet wird,x
ist dies ein Wahrheits-Wert. Wenn es falsch ist, ist esfalse
. Also, in Pseudo - Code:if x, disp(true), else disp(false)
. Wenn dies nicht kompiliert werden kann,x
kann es nicht verwendet werden. In MATLAB und mehreren anderen Sprachen wird alles, was nicht Null ist, als wahr0
undfalse
als falsch betrachtet. Die ZeichenfolgeHello
ist in MATLAB also ein wahrer Wert. Bei einigen Sprachen muss der Wert jedoch ein Boolescher Wert sein (hier der Fall). Daher muss er mithilfe von in einen Booleschen Wert konvertiert werden<1
.Pyth, 3
Ich hatte erwartet, dass in Pyth ein oder zwei Bytes dafür eingebaut sind. Stattdessen sind hier die besten Lösungen, die ich finden konnte:
oder
oder
quelle
TIS-100, 39 Bytes
Dies ist natürlich genauer gesagt ein Programm für die T21 Basic Execution Node-Architektur, wie sie vom TIS-100-Emulator emuliert wird.
Ich werde Sie auf diese Antwort verweisen, um eine fantastisch ausführliche Erklärung des Scorings für TIS-100-Programme sowie ihrer Struktur zu erhalten.
Erläuterung:
Im Pseudocode würde es ungefähr so aussehen:
Der T21 hat keine Booleschen Typen oder Wahrheits / Falsch-Werte. Daher gibt das Programm -1 für ungerade Zahlen und 0 für gerade Zahlen zurück, es sei denn, die vorherige Eingabe war ungerade. In diesem Fall gibt es -1 für gerade Zahlen und 0 für ungerade Zahlen zurück Zahlen - Wenn Sie diese Tatsache stört, ist dies eine vollständige Programmantwort, sodass Sie Ihren T21 zwischen den Einsätzen einfach neu starten können.
quelle
Gelee , 1 Byte
Probieren Sie es online!
Nur ein weiteres eingebautes.
Für Leute, die Jelly nicht kennen: Es kann ziemlich gut auf fehlende Code-Teile schließen, daher gibt es keinen großen syntaktischen Unterschied zwischen einem Snippet, einer Funktion und einem vollständigen Programm. Der Interpreter fügt automatisch Code hinzu, um geeignete Argumente einzugeben und das Ergebnis auszugeben. Das ist ziemlich praktisch, wenn es um PPCG-Regeln geht, die Funktionen und Programme zulassen, aber keine Snippets zulassen. In der TIO-Verknüpfung behandle ich dies als Funktion und führe es für jede ganze Zahl von 1 bis einschließlich 20 aus, aber es funktioniert auch als vollständiges Programm.
Gelee , 2 Bytes
Probieren Sie es online!
Es ist auch ohne das eingebaute ziemlich kurz. (Dies ist bitweise UND mit 1.)
quelle
7 , 18 Zeichen, 7 Bytes
Probieren Sie es online!
7 hat nichts, was einer normalen if-Anweisung ähnelt, und hat mehr als eine idiomatische Art, einen Booleschen Wert darzustellen. Als solches ist es schwer zu wissen, was als wahr und falsch gilt, aber dieses Programm verwendet
1
für ungerade und die Null-Zeichenfolge für gerade (die wahr und falsch Werte für Perl, in denen der 7-Interpreter geschrieben ist). (Es ist einfach genug, dies zu ändern. Die ungerade Ausgabe wird vor den ersten 7 angegeben, die gerade Ausgabe wird zwischen den ersten beiden 7 angegeben. Möglicherweise muss das Ausgabeformat geändert werden, um andere Ausgabearten zu verarbeiten. Ich habe die beiden verwendet kürzeste eindeutige Ausgaben hier.)7 verwendet eine komprimierte Oktalcodierung, bei der drei Bytes der Quelle acht Bytes des Programms darstellen, sodass 18 Zeichen der Quelle in 7 Bytes auf der Platte dargestellt werden.
Erläuterung
Wie bei vielen Ausgabeformaten machen "Ausgabe-Ganzzahlen" vor der Ausgabe eine beliebige Anzahl von Escape-Ebenen rückgängig. Somit
40
kann anstelle405
einer Swap-Operation (die eine Swap-and-Escape-Operation gefolgt von einer Unescape-Operation ist) eine kombinierte Swap-and-Escape-Operation verwendet werden . Wenn Sie ein Ausgabeformat verwenden, das in Bezug auf das Escape nicht stabil ist, benötigen Sie dort das volle Format405
. (Der Grund, warum wir ursprünglich die Formatzeichenfolge umgehen mussten, ist, dass die erste Ausgabe, die nicht darstellbare Zeichen enthält, automatisch das Ausgabeformat 7 erzwingt. Durch das Escaping werden die nicht darstellbaren Zeichen entfernt und das Format 0 kann ausgewählt werden.)Von den sechs anfänglichen Stack-Elementen ist das oberste das Hauptprogramm (und wird von dem verbraucht
13
, das als Erstes ausgeführt wird). Die zweite023
Methode wählt das Ausgabeformat aus und fordert Eingaben an. Sie wird von dieser Operation verwendet. Der dritte wird als Nebeneffekt des3
Vorgangs verbraucht (er wird verwendet, um Stapelelemente zusätzlich zur Ausgabe zu verwerfen). der vierte40
ist der Körper der Schleife (und wird von dem verbraucht, der5
die Schleife ausführt); und die fünfte und sechste werden mehrmals gleich der Eingabe getauscht (landen also an ihren ursprünglichen Positionen, wenn die Eingabe gerade ist, oder an den Positionen der jeweils anderen, wenn die Eingabe ungerade ist).Sie könnten einen Charakter aus dem Takt bringen
177
, indem Sie das führende17
Element auf ändern (und sich dabei auf ein implizites leeres sechstes Stapelelement verlassen), aber dies würde die Parität der Ausgaben auf eine weniger idiomatische Methode ändern als ungerade-ist-wahr, und es wird nicht gespeichert ein ganzes Byte (die Quelle ist immer noch sieben Byte lang). Aus diesem Grund habe ich mich für die natürlichere Ausgabe entschieden, da sie nicht schlechter abschneidet.quelle
Brain-Flak ,
22 bis20 BytesHier ist eine weitere coole Antwort in Brain-Flak, die du dir ebenfalls ansehen solltest
Probieren Sie es online!
Erläuterung
Zunächst machen wir eine Kopie unserer Eingabe mit
(({}))
.Die untere Kopie dient als Wahrheitswert, während die obere Kopie für die eigentliche Verarbeitung verwendet wird. Dies geschieht, weil die Eingabe oben sein muss und es ziemlich umständlich ist (zwei zusätzliche Bytes!), Eine 1 unter die Eingabe zu setzen.
Dann beginnen wir eine Schleife
{({}[()]<>)}
. Dies ist eine einfache Modifikation der Standard-Countdown-Schleife, die bei jeder Dekrementierung die Stapel wechselt.Da es zwei Stapel gibt, endet eine gerade Zahl auf dem Stapel, auf dem sie begonnen hat, während eine ungerade Zahl auf dem gegenüberliegenden Stapel endet. Der kopierte Wert bleibt an Ort und Stelle und dient somit als Markierung für den Ausgangspunkt.
Sobald wir mit der Schleife fertig sind, haben wir einen
0
(ursprünglich die Eingabe), der entweder auf einem Wahrheitswert (der Kopie der Eingabe) oder einem falschen Wert (leerer Stapel) liegt. Wir haben auch den entgegengesetzten Wert auf dem anderen Stapel.Wir müssen das loswerden, das
0
entweder von{}
oder entfernt werden kann<>
. Beide scheinen zu funktionieren und liefern entgegengesetzte Ergebnisse,{}
verursachen jedoch einen falschen Wert für Null, wenn er wahrheitsgemäß zurückgegeben werden soll. Dies liegt daran, dass unser "Wahrheits" -Wert eine Kopie der Eingabe ist und Null die einzige Eingabe ist, die falsch sein kann.Dieses Problem wird durch Beenden des Programms mit behoben
<>
.(Natürlich muss ich laut Spezifikation technisch nicht null unterstützen, sondern gebe zwei Optionen an, die ich am liebsten unterstützen würde.)
quelle
BitCycle ,
19 1716 BytesProbieren Sie es online!
Ich habe das Gefühl, dass eine 18-Byte-Lösung außerhalb der Reichweite schwebt :(Haha! -2 Byte durch Verwendung von a+
, um Bits aus verschiedenen Richtungen umzuleiten.Es fühlt sich immer noch so an, als ob zu viel Leerzeichen darin ist (ganze 6 Bytes!)
Erläuterung:
quelle
Batch, 16 Bytes
Ausgänge 1 für ungerade, 0 für gerade. Alternative 16-Byte-Version funktioniert auch bei negativen Zahlen:
17 Bytes, um 1 für gerade, 0 für ungerade auszugeben:
quelle
(Input):(Output)
Excel, 10 Bytes
Oder:
Für die Ausgabe von:
quelle
?[A1]mod 2
; Eine anonyme VBE- Direktfensterfunktion , die Eingaben von[A1]
und Ausgaben an das VBE-0
Direktfenster annimmt, wobei (falsey) für gerade und1
(truthy) für ungerade stehtJSFuck ,
968593846420 BytesJSFuck ist ein esoterischer und lehrreicher Programmierstil, der auf den atomaren Teilen von JavaScript basiert. Es werden nur sechs verschiedene Zeichen zum Schreiben und Ausführen von Code verwendet.
Ausgänge 1 für ungerade und 0 für gerade.
Probieren Sie es online!
quelle
alert(prompt()%2)
scheint 9384 Zeichen zu sein.[]["fill"]["constructor"]("return this%2")["call"]
.fill
wurde gewählt, weil das nur 81 Zeichen kostet, die am wenigsten von allen Array-Methoden. Sie könnten auch argumentieren, dass JSFuck keine eigene Sprache ist, sondern eine Teilmenge von JavaScript.+
, um weitere 77 Bytes zu sparen ;-) Und ich persönlich denke, das Antworten in JSF ist in Ordnung; Es ist im Grunde ein Dialekt von JS.Bash + Bc,
2114119 BytesLiest die Befehlszeileneingabe, erweitert den Wert mit der Mod-Operation in die Zeichenfolge und leitet die Zeichenfolge zur Berechnung an bc weiter. Ausgänge 1 für ungerade, 0 für gerade.
Testfälle:
Edit: 7 Bytes dank @ ais523 gespeichert
Edit 2: Weitere 3 Bytes dank @Dennis gespeichert
Edit 3: Weitere 2 dank @Dennis gespeichert
quelle
$1
) nehmen, anstatt Bytes damit zu verbringen, es aus stdin zu lesen?bc<<<$1%2
.