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>
Odpowiedzi:
ArnoldC ,
299283 bajtówTo wyjście
1
(co jest prawdą) dla nieparzystych danych wejściowych i0
(co jest fałszem) dla parzystych danych wejściowych.Wypróbuj online!
„ Teraz to jest plan ” (próba wyjaśnienia)
Kod odczytuje dane wejściowe do zmiennej
i
, zastępuje je wynikiem modulo 2, a następnie drukuje.źródło
BULLSHIT
YOU HAVE NO RESPECT FOR LOGIC
GET TO THE CHOPPER
GET YOUR ASS TO MARS
...Brak mi słów.pieprzenie mózgu , 8 bajtów
Dane wejściowe są jednostkowe. Wyjście to 1 (prawda) dla liczb nieparzystych i NUL (fałsz) dla liczb parzystych.
Wypróbuj online!
Jak to działa
Zaczynamy od zwiększenia bieżącej komórki,
+
aby móc przejść do pętli while[,>,]
.W każdej iteracji
,
odczytuje bajt ze STDIN,>
przesuwa się do komórki po prawej, a następnie,
odczytuje kolejny bajt ze STDIN. Kiedy dane wejściowe zostaną wyczerpane, interpreter (w każdym razie ten na TIO) ustawi komórkę na NUL . Kiedy to się stanie, warunek pętli while nie jest już spełniony i my się z niego wydostajemy.Niech n będzie wejściową liczbą całkowitą. Jeśli jest parzysta liczba bajtów wejściowych - tzn. Jeśli n jest parzyste - pierwsze iteracje n / 2 będą czytały dwa 1 -y, a następne iteracje będą czytały dwa NUL , pozostawiając taśmę w następujący sposób.
<.
przenosi jedną komórkę i drukuje jej zawartość, wysyłając bajt NUL do STDOUT.Jeśli jednak jest nieparzysta liczba bajtów wejściowych, pierwsze (n - 1) / 2 iteracje będą czytały dwa 1 , a następne iteracje będą czytały jeden 1 i jeden NUL , pozostawiając taśmę w następujący sposób.
<
spowoduje teraz powrót do komórki zawierającej bajt / znak 1 , który.
drukuje.źródło
Mathematica, 4 bajty
Daje
True
dla nieparzystych danych wejściowych iFalse
dla parzystych danych wejściowych, kto wiedział?Jest też
EvenQ
, ale kto chciałby to wszystko wpisać?źródło
2∣#&
działa równieżQ
?Taxi ,
14821290106310291009 bajtówNigdy wcześniej nie pisałem programu w Taxi i jestem nowicjuszem w programowaniu dla ogółu, więc są prawdopodobnie lepsze sposoby na załatwienie tego. Sprawdziłem błędy i udało mi się trochę zagrać w golfa, próbując różnych tras, które mają ten sam wynik. Z zadowoleniem przyjmuję wszelkie poprawki.
Zwraca
0
za parzyste i1
nieparzyste.Wypróbuj online!
Masz rację, to okropnie czytać bez łamania linii. Oto sformatowana wersja:
Oto moja najlepsza próba wyjaśnienia logiki:
Nie wraca do taksówki garaży powoduje wyjście na stderr ale jestem w porządku z tym .
źródło
Siatkówka , 8 bajtów
Odpowiedź siatkówki na dane dziesiętne. Jest to również proste rozwiązanie wyrażenia regularnego, które działa w prawie każdym smaku wyrażenia regularnego. Dopasowuje (i drukuje
1
) dla parzystych danych wejściowych i nie pasuje (i drukuje0
) dla nieparzystych danych wejściowych.Wypróbuj online!
Alternatywa, także dla 8 bajtów, wykorzystuje etap transliteracji, aby zmienić wszystkie cyfry parzyste na
x
pierwsze (ponieważ etapy transliteracji mają wbudowane cyfry parzyste / nieparzyste):Oczywiście najkrótszy format wejściowy (nawet krótszy niż jednoargumentowy ) byłby binarny w tym przypadku, gdzie wystarczyłoby proste wyrażenie regularne
0$
. Ale ponieważ wyzwanie polega zasadniczo na znalezieniu najmniej znaczącej cyfry binarnej, dane binarne wydają się omijać rzeczywiste wyzwanie.źródło
Python,
1110 bajtów-1 bajt dzięki Griffin
Wypróbuj online!
Używając bitowego
and
, zwraca0
parzyste i1
nieparzysteźródło
1 .__and__
jest o jeden char krótszyLOLCODE, 67 bajtów
Funkcja, która zwraca
WIN
(prawda), jeśli liczba jest parzysta, w przeciwnym razie (nieparzysta) zwróciFAIL
(fałsz).Zadzwoń z
C"123"
.źródło
MATL ,
53 bajtówPonieważ wbudowane są nudne
Daje to macierz niezerowych wartości (co jest zgodne z prawdą) dla parzystych danych wejściowych i macierz z zerą w prawym dolnym wejściu (co jest fałszem) dla nieparzystych danych wejściowych.
Wypróbuj online! Kod stopki to
if-else
gałąź ilustrująca prawdziwość lub fałszowanie wyniku. Usunięcie tej stopki spowoduje niejawne wyświetlenie macierzy.Wyjaśnienie
Rozważ dane wejściowe
5
jako przykładźródło
Java 8, 8 bajtów
Wypróbuj tutaj.
Java 7, 30 bajtów
Wypróbuj tutaj.
Wyjścia
true
dla liczb parzystych ifalse
nieparzystychJeśli
1/0
byłoby dozwolone zamiasttrue/false
( nie jest, biorąc pod uwagę liczbę głosów tutaj ):n->n%2
int c(int n){return n%2;}
źródło
int o(int n){return java.util.stream.IntStream.of(n).map(n->n%2).filter(n==0).findAny().isPresent();}
Piet, 15 kodów / 16 bajtów
Tłumacz online dostępny tutaj.
Ten program zwraca 0, jeśli wejście jest parzyste, a 1, jeśli wejście jest nieparzyste.
Powyższy tekst przedstawia obraz. Możesz wygenerować obraz, wklejając go do pola tekstowego na stronie tłumacza. Dla wygody podałem poniżej obraz, w którym rozmiar kodu wynosi 31 pikseli. Siatka jest dostępna dla czytelności i nie jest częścią programu.
Wyjaśnienie
Ten program używa wbudowanego modulo do ustalenia, czy dane wejściowe są parzyste czy nieparzyste.
Ciemnoniebieskie kody w lewym dolnym rogu nigdy nie są odwiedzane i można je zmienić na dowolny kolor inny niż kolor sąsiedniego kodu. Wybrałem ciemnoniebieski, ponieważ myślę, że ładnie wygląda z resztą programu. Lewy górny czarny kod może być również biały, ale nie w żadnym innym kolorze. Wybrałem czarny, ponieważ myślę, że wygląda ładniej.
Dostarczyłem program zarówno w formie obrazu, jak i tekstu, ponieważ nie ma wyraźnego konsensusu co do sposobu oceniania programów Piet. Zapraszam do rozważenia meta dyskusji.
źródło
pieprzenie mózgu , 14 bajtów
Dane wejściowe i wyjściowe są traktowane jako kody znaków zgodnie z tym meta .
Wartość bajtu 1 odpowiada liczbom nieparzystym, a 0 parzystemu.
Wypróbuj online!
źródło
JavaScript, 6 bajtów
Anonimowa funkcja:
Alternatywnie o tej samej długości:
Oba powrócą,
0|1
co powinno spełniać wymaganie dotyczącetruthy|falsey
wartości.Wypróbuj obie wersje online
źródło
0|1
są, prawda? @TheLethalCoderJapt , 1 bajt
Zwraca
1
liczby0
nieparzyste.Wypróbuj online!
Wyjaśnienie
Jedną z charakterystycznych cech Japt jest to, że w przeciwieństwie do większości języków golfowych, funkcje nie mają ustalonej aranżacji; to znaczy, każda funkcja może zaakceptować dowolną liczbę argumentów. Oznacza to, że czasami możesz pominąć argumenty, a Japt zgadnie, co chcesz.
v
na liczbach jest funkcją, która akceptuje jeden argument i zwraca,1
jeśli liczba jest podzielna przez argument, w przeciwnym razie0
. Na przykład:Ten program wyświetli
1
jeśli dane wejściowe są podzielne przez 3, i w0
przeciwnym razie. Tak się składa, że domyślnym argumentem jest2
rozwiązanie tego problemu w jednym bajcie.Alternatywne rozwiązanie 1-bajtowe:
¢
konwertuje dane wejściowe na ciąg base-2.-h
Flag zwraca ostatni znak z łańcucha.Wypróbuj online!
źródło
pieprzenie mózgu , 12 bajtów
Wymaga to interpretera z okrągłą taśmą i owijającymi się komórkami. Ten w TIO ma 65 536 8-bitowych komórek i spełnia wymagania.
I / O jest w bajtach. Nieparzyste dane wejściowe są odwzorowywane na 0x00 (fałsz), nawet dane wejściowe na bajt niezerowy (prawda).
Wypróbuj online!
Jak to działa
Zaczynamy od odczytania bajtu wejścia za pomocą
,
i dodania 2 do jego wartości za pomocą++
. Zobaczymy później, dlaczego konieczne jest zwiększenie.Następnie wchodzimy do pętli, która przesuwa się do komórki po prawej stronie, dodajemy 2 do niej i powtarza proces, chyba że ustawi to wartość komórki na 0 .
Początkowo wszystkie komórki oprócz komórki wejściowej mają wartość 0 . Jeśli wejście jest nieparzyste, dodanie 2 do niego nigdy go nie wyzeruje. Jednak po zapętleniu taśmy 127 razy, następna iteracja pętli ustawi komórkę po prawej stronie komórki wejściowej na 128 × 2 = 0 (mod 256) , powodując zakończenie pętli.
>++
powtarza ciało pętli jeszcze raz, więc następna komórka jest również zerowana, a następnie drukowana za pomocą.
.Z drugiej strony, jeśli dane wejściowe to n, a n jest parzyste, kod przed pętlą ustawia komórkę wejściową na n + 2 . Po zapętleniu wokół taśmy (256 - (n - 2)) / 2 = (254 - n) / 2 razy, komórka wejściowa osiągnie 0 , a komórka po jej prawej stronie będzie zawierać wartość (254 - n) / 2 × 2 = 254 - n . Po dodaniu 2 za pomocą
>++
,.
wypisuje 256 - n = -n (mod 256) , co jest niezerowe, ponieważ n jest niezerowe.Na koniec zauważ, że w drugim przypadku wypisano by 258 - n = 2 - n (mod n) , gdybyśmy nie zwiększali danych wejściowych przed pętlą, ponieważ do wyzerowania komórki wejściowej byłaby potrzebna jeszcze jedna pętla wokół taśmy. Program zawiedzie zatem dla wejścia 2 .
źródło
Sinclair ZX81 BASIC
124 bajty114 bajtów109 bajtów5750 tokenizowanych bajtów BASICZgodnie z komentarzami Adáma poniżej, oto najnowszy kandydat do wydania:
Teraz będzie
PRINT
1
nawet0
nieparzyste. Zero wychodzi.Oto starsze wersje wykazu symbolicznego w celach informacyjnych:
Oto stara lista (v0.01), abyś mógł zobaczyć ulepszenia, które wprowadziłem, ponieważ ta nowa oferta jest nie tylko mniejsza, ale jest szybsza:
A oto v0.02 (przy użyciu podciągów Sinclair):
źródło
PRINT (A-2*INT A/2)/A
?0
nie powinna produkowaćTRUE
OrFALSE
, stąd jak0
nie miała produkować wynik wtedy, gdybySTOP
ping program. Prawdopodobnie zinterpretowałem pierwotne pytanie, ponieważ zostało wysłane przez @SIGSEGV trochę zbyt dosłownie. Tak, można optymalizować i refaktoryzować, masz rację.05AB1E , 1 bajt
Dość samo-eksploracyjna. Zwroty
a % 2 == 0
Wypróbuj online!
źródło
É
jest moim zdaniem lepszym wyborem; żartować.É
zwrotya % 2 == 1
.Siatkówka, 3 bajty
Końcowy znak nowej linii jest znaczący. Pobiera dane wejściowe jednoargumentowe. Wyjścia 1 dla liczb nieparzystych, nic dla liczb parzystych. Wypróbuj online!
źródło
C ++, 25 bajtów
Definiuje to szablon zmienny ( konstrukcja podobna do funkcji ) o wartości równej operacji bitowej
input&1
.0
dla parzystych wartości1
dla wartości nieparzystych. Wartość jest obliczana na podstawie czasu kompilacji.Wymaga C ++ 14.
Wypróbuj online!
źródło
int o(int v){return v&1;}
) zajmowałaby tę samą liczbę bajtów, z tą różnicą, że wartość byłaby obliczana w czasie wykonywania.main()
konstrukcji podobnej do programu program zostałby po prostu skompilowany do kompilacjireturn 0
, a nawet nie. Jest to sprzeczne z meta postem, do którego odsyłam w tej odpowiedzi.[](int x){return x%2;}
Wypróbuj onlinePyth,
32 bajtyJa to zrobiłem. Grałem w golfa, który nie nadaje się do gry w golfa. Po raz pierwszy to nietrywialne rozwiązanie, któremu udało się zdobyć ostatni bajt!
Prawda na parzystych wartościach (bez 0, ale to nie jest pozytywne, więc ...).
Wyjaśnienie:
Na przykład
!!2 = !0 = 1
i!!!3 = !!0 = !1 = 0
Tutaj będę przechowywać moją bibliotekę 3-bajtowych rozwiązań.
„Jest jeszcze jedna odpowiedź z wieloma 3-bajtowymi rozwiązaniami, ale jeszcze nie jest kompletna. Dodajmy jeszcze kilka:
Indeksuje do listy
[0,1]
modułowo, podając prawdziwe wartości przy nieparzystym wprowadzaniu.Czy 2 w pierwotnym rozkładzie na czynniki wejściowe? (Prawda nawet)
Czy GCD 2 i wejście 2? (Prawda nawet)
czy XOR-owanie wejścia 1 nie zmniejsza go? (Prawda nawet)
Zasadniczo
Q == Q*-1^Q
gdzie Q jest wejściem, ale odbywa się przez pętlę. (Prawda nawet)Jak powyżej.
Przekłada się na
Q <= -Q^Q
(Prawda nawet)Zauważ, że dowolne z powyższych rozwiązań
g
będzie działać z<
odwróconym fałszem prawdy).źródło
C #, 8 bajtów
Kompiluje do
Func<int, bool>
.Lub jeśli anonimowa funkcja jest niedozwolona, ta metoda dla 21 bajtów:
źródło
if (1)
się nie kompiluje.if (1)
w twoim kodzie?if (x)
wartość true,x
to wartość true. Jeśli ma wartość false, to jestfalse
. Tak więc, w pseudo kod:if x, disp(true), else disp(false)
. Jeśli kompilacja się nie powiedzie,x
nie będzie można jej użyć. W programie MATLAB i kilku innych języków, wszystkiego, co niezerowe uważany jest prawdziwe, natomiast0
ifalse
są uważane za fałszywe. Tak więc ciągHello
jest prawdziwą wartością w MATLAB. Jednak niektóre języki wymagają, aby wartość była wartością logiczną (w tym przypadku), dlatego należy ją przekonwertować na wartość logiczną, używając<1
.Pyth, 3
Spodziewałem się, że Pyth będzie miał wbudowany 1 lub 2 bajty. Zamiast tego oto najlepsze rozwiązania, jakie mogłem znaleźć:
lub
lub
źródło
TIS-100, 39 bajtów
Oczywiście jest to dokładniej program dla architektury T21 Basic Execution Node, emulowany przez emulator TIS-100.
Odniosę się do tej odpowiedzi, aby uzyskać fantastycznie szczegółowe wyjaśnienie wyników dla programów TIS-100, a także ich struktury.
Wyjaśnienie:
W pseudokodzie wyglądałoby to tak:
T21 nie ma typów boolowskich ani wartości prawda / fałsz, więc program zwraca -1 dla liczb nieparzystych i 0 dla liczb parzystych, chyba że poprzednie wejście było nieparzyste, w którym to przypadku zwraca -1 dla liczb parzystych i 0 dla liczb nieparzystych liczby - jeśli ten fakt Cię niepokoi, jest to odpowiedź na pełny program, więc możesz po prostu zrestartować T21 między użytkami.
źródło
Galaretka , 1 bajt
Wypróbuj online!
Po prostu kolejne wbudowane.
Dla ludzi, którzy nie znają Jelly: ma dość dużą zdolność wnioskowania o brakujących fragmentach kodu, dlatego nie ma dużej różnicy składniowej między fragmentem kodu, funkcją i pełnym programem; interpreter automatycznie doda kod do wprowadzenia odpowiednich argumentów i wyświetli wynik. Jest to bardzo przydatne, gdy mamy do czynienia z regułami PPCG, które zezwalają na funkcje i programy, ale nie pozwalają na urywki. W linku TIO traktuję to jako funkcję i uruchamiam na każdej liczbie całkowitej od 1 do 20 włącznie, ale działa to również jako pełny program.
Galaretka , 2 bajty
Wypróbuj online!
Jest też dość krótki bez wbudowanego. (Jest to bitowe-ORAZ z 1.)
źródło
7 , 18 znaków, 7 bajtów
Wypróbuj online!
7 nie ma niczego, co przypominałoby normalną instrukcję if, i ma więcej niż jeden idiomatyczny sposób reprezentowania wartości logicznej. W związku z tym trudno jest ustalić, co jest prawdą i falseyem, ale ten program używa
1
ciągów nieparzystych, a zerowy dla parzystych (wartości prawdy i falseya dla Perla, w których zapisany jest 7 interpreter). (Łatwo to zmienić; nieparzyste dane wyjściowe są określane przed pierwszymi 7, parzyste dane wyjściowe są określane między pierwszymi dwoma siódemkami. Może jednak potrzebować zmiany formatu wyjściowego, aby obsłużyć inne typy danych wyjściowych; Użyłem dwóch najkrótsze wyraźne wyniki tutaj.)7 wykorzystuje skompresowane kodowanie ósemkowe, w którym trzy bajty źródła reprezentują osiem bajtów programu, więc 18 znaków źródła jest reprezentowanych w 7 bajtach na dysku.
Wyjaśnienie
Podobnie jak wiele formatów wyjściowych, „liczby całkowite wyjściowe” cofają dowolną liczbę poziomów zmiany znaczenia przed wyprowadzeniem; tak więc
40
, które łącznie tworzą operację zamiany i ucieczki, mogą być użyte zamiast405
operacji zamiany (która jest zamianą i ucieczką, po której następuje rozpakowanie). Jeśli korzystasz z formatu wyjściowego, który nie jest stabilny w odniesieniu do zmiany znaczenia, potrzebujesz pełnego405
tam. (Nawiasem mówiąc, powodem, dla którego musieliśmy pierwotnie opuścić ciąg formatu, jest to, że jeśli pierwsze wyjście zawiera niereprezentowalne znaki, automatycznie wymusza format wyjściowy 7. Ucieczka powoduje usunięcie niereprezentatywnych znaków i pozwala wybrać format 0).Z sześciu początkowych elementów stosu, najwyższy jest programem głównym (i jest zużywany przez to
13
, co uruchamia się jako pierwsze); druga to ta,023
która wybiera format wyjściowy i żąda danych wejściowych i jest zużywana przez tę operację; trzeci jest zużywany jako efekt uboczny3
operacji (służy do odrzucania elementów stosu oprócz generowania wyników); czwarta,40
to ciało pętli (i pochłaniane przez5
wykonującego ją); a piąta i szósta są zamieniane kilka razy równe wartości wejściowej (w ten sposób kończą się w swoich pierwotnych pozycjach, jeśli dane wejściowe są parzyste, lub w pozycjach innych, jeśli dane wejściowe są nieparzyste).Możesz zagrać w golfa od postaci, zmieniając wiodące
177
na17
(i polegając na domyślnym pustym szóstym stosie), ale to zmieniłoby parzystość wyników na mniej idiomatyczną metodę niż nieparzysta prawda i nie oszczędza cały bajt (źródło ma nadal siedem bajtów). Jako taki, postanowiłem użyć bardziej naturalnej formy produkcji, ponieważ nie ma gorszego wyniku.źródło
Brain-Flak ,
2220 bajtówOto kolejna fajna odpowiedź w Brain-Flak, którą powinieneś również sprawdzić
Wypróbuj online!
Wyjaśnienie
Na początek zrobimy kopię naszego wkładu za pomocą
(({}))
.Dolna kopia będzie służyć jako prawdziwa wartość, podczas gdy górna będzie używana do faktycznego przetwarzania. Dzieje się tak, ponieważ potrzebujemy, aby dane wejściowe znajdowały się na górze, a umieszczenie 1 pod wejściem jest raczej kłopotliwe (dwa dodatkowe bajty!).
Następnie zaczynamy pętlę
{({}[()]<>)}
. Jest to prosta modyfikacja standardowej pętli odliczającej, która zmienia stosy za każdym razem, gdy zmniejsza się.Ponieważ są dwa stosy, liczba parzysta kończy się na wierzchu stosu, na którym się rozpoczęła, a liczba nieparzysta kończy się na przeciwnym stosie. Skopiowana wartość pozostanie na miejscu, a tym samym będzie działać jako wskaźnik miejsca, od którego zaczęliśmy.
Kiedy skończymy z pętlą, mamy
0
(pierwotnie dane wejściowe) siedzące na wartości prawdy (kopia danych wejściowych) lub fałszu (pusty stos). Mamy również przeciwną wartość na drugim stosie.Musimy się pozbyć tych,
0
które można usunąć za pomocą{}
lub<>
. Oba wydają się jednak działać i dają przeciwne wyniki{}
powodują fałszowanie wartości zero, gdy powinna ona zwrócić prawdę. Jest tak, ponieważ nasza „prawdziwa” wartość jest kopią danych wejściowych, a zero to jedyne dane wejściowe, które mogą być fałszywe.Ten problem można rozwiązać, kończąc program na
<>
.(Oczywiście zgodnie ze specyfikacją technicznie nie muszę obsługiwać zera, ale podaj dwie opcje, które wolałbym ją obsługiwać)
źródło
BitCycle ,
19 1716 bajtówWypróbuj online!
Argh, wydaje mi się, że 18-bajtowe rozwiązanie unosi się tuż poza zasięgiem :(Haha! -2 bajty za pomocą+
przekierowania bitów pochodzących z różnych kierunków.Nadal wydaje się, że jest w nim za dużo białych znaków (całe 6 bajtów!)
Wyjaśnienie:
źródło
Partia, 16 bajtów
Wyjścia 1 dla nieparzystych, 0 dla parzystych. Alternatywna wersja 16-bajtowa działa również na liczby ujemne:
17 bajtów na wyjście 1 dla parzystej, 0 dla nieparzystej:
źródło
(Input):(Output)
Excel, 10 bajtów
Lub:
Do produkcji:
źródło
?[A1]mod 2
; funkcja okna immediates anonimowy VBE że trwa od wejścia[A1]
i wyjścia do okna immediates VBE z0
(falsey) reprezentowanie nawet i1
(truthy) reprezentowanie dziwneJSFuck ,
968593846420 bajtówJSFuck to ezoteryczny i edukacyjny styl programowania oparty na atomowych częściach JavaScript. Używa tylko sześciu różnych znaków do pisania i wykonywania kodu.
Wyjścia 1 dla nieparzystych i 0 dla parzystych.
Wypróbuj online!
źródło
alert(prompt()%2)
wydaje się być 9384 znakami.[]["fill"]["constructor"]("return this%2")["call"]
.fill
został wybrany, ponieważ kosztuje to tylko 81 znaków, najmniej ze wszystkich metod tablicowych. Można również argumentować, że JSFuck nie jest oddzielnym językiem, ale raczej podzbiorem JavaScript.+
aby zaoszczędzić kolejne 77 bajtów ;-) I osobiście uważam, że odpowiedź w JSF jest w porządku; jest to po prostu dialekt JS.Bash + bc,
2114119 bajtówOdczytuje dane z wiersza poleceń, rozszerza wartość do ciągu za pomocą operacji mod i przesyła ciąg do bc w celu obliczenia. Wyjścia 1 dla nieparzystych, 0 dla parzystych.
Przypadki testowe:
Edycja: zapisane 7 bajtów dzięki @ ais523
Edycja 2: zapisane kolejne 3 bajty dzięki @Dennis
Edycja 3: zapisane kolejne dwa dzięki @Dennis
źródło
$1
) Zamiast wydawać bajty na czytanie ze standardowego wejścia?bc<<<$1%2
.