Idiom „Do While False”

47

Czyń fałszywie

W pracy dzisiaj jeden z moich kolegów opisywał przypadek użycia do while (fałsz). Osoba, z którą rozmawiał, pomyślała, że ​​to głupie i proste, jeśli stwierdzenia byłyby znacznie lepsze. Następnie zmarnowaliśmy połowę naszego dnia, omawiając najlepszy sposób napisania czegoś równoważnego do:

do
{
   //some code that should always execute...

   if ( condition )
   {
      //do some stuff
      break;
   }

   //some code that should execute if condition is not true

   if ( condition2 )
   {
       //do some more stuff
       break;
   }

   //further code that should not execute if condition or condition2 are true

}
while(false);

Jest to idiom, który dość często występuje w c. Twój program powinien generować takie same wyniki, jak poniższy pseudo-kod, w zależności od warunków.

do
{
   result += "A";

   if ( C1)
   {
      result += "B";
      break;
   }

   result += "C"

   if ( C2 )
   {
       result += "D";
       break;
   }

   result += "E";

}
while(false);

print(result);

Dlatego dane wejściowe mogą być:

1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false

i wynik powinien być:

1. "AB"
2. "AB"
3. "ACD"
4. "ACE"

To jest golf golfowy, więc odpowiedzi będą oceniane według bajtów. Standardowe luki są zabronione.

Tak, to jest proste, ale mam nadzieję, że zobaczymy kilka kreatywnych odpowiedzi. Mam nadzieję, że prostota zachęci ludzi do używania języków, z którymi są mniej pewni.

Człowiek śmiechu
źródło
Czy dane wyjściowe muszą być pisane wielkimi literami, czy też małe litery są również dozwolone?
Adnan
7
Na marginesie dyskusji z twoim współpracownikiem wydaje mi się, że możesz to samo osiągnąć, stosując metodę return resultzamiast break. Następnie otrzymasz bonusy za ponowne użycie i uproszczenie kodu wywoławczego. Ale może coś mi umknęło.
jpmc26
3
Nie wiedziałem, że to idiom w C ...
Mehrdad
5
@ Mehrdad niektórzy ludzie robią to zamiast, gotoponieważ używanie gotojest złej formie :)
Seth
2
Jedyny raz, którego kiedykolwiek użyłem, do{}while(false)to makra. Proste ifnie wystarcza, ponieważ źle współdziała z elseotoczeniem, które może być obecne. Bez makra równie dobrze możesz usunąć doi while.
nwp

Odpowiedzi:

19

Python 3, 31

Zaoszczędzono 1 bajt dzięki xnor.

Tylko jeden bajt od ES6. : / Głupi Python i jego długa anonimowa składnia funkcji.

Brawo dla jednego liniowca!

lambda x,y:x*"AB"or"AC"+"ED"[y]

Przypadki testowe:

assert f(1, 1) == "AB"
assert f(1, 0) == "AB"
assert f(0, 1) == "ACD"
assert f(0, 0) == "ACE"
Morgan Thrapp
źródło
7
Jeśli ponownie złożysz zamówienie x*"AB", możesz później zaoszczędzić miejsce.
xnor
2
Niestety, twoją długą, anonimową składnią funkcji będzie śmierć Pythona: P
Conor O'Brien
5
@ CᴏɴᴏʀO'Bʀɪᴇɴ Wiedziałem, że coś musiało powstrzymywać Pythona. Prześlę PEP jak najszybciej.
Morgan Thrapp,
2
Ty to zrobisz, a ja zamówię pułapki na węże
Conor O'Brien,
9
PEP, który mógłby być λsynonimem, lambdabyłby świetny :)
Robert Grant
13

JavaScript ES6, 30 26 25 bajtów

Prosta anonimowa funkcja pobierająca dwa dane wejściowe. Przypisz zmienną do wywołania. Aktualizacja : Przejdźmy do indeksu modwagon. Oszczędza 4 bajty. Zapewniłem sobie przewagę nad Pythonem . Zapisano bajt, curryjąc funkcję; zadzwoń jak (...)(a)(b). Dzięki Patrick Roberts!

a=>b=>a?"AB":"AC"+"ED"[b]

Stara, oryginalna wersja, 30 bajtów (dołączona, aby nie wtopić się w odpowiedź na python (;):

(a,b)=>"A"+(a?"B":b?"CD":"CE")
Conor O'Brien
źródło
To nie jest takie sprytne ...
theonlygusti
15
@ thehelylygusti To golf, a nie konkurs popularności. Ponadto, dlaczego marnowanie bajtów jest sprytne, jeśli istnieje bardziej zwięzłe rozwiązanie?
Conor O'Brien
Podoba mi się twój wybór nosa:b?
J Atkin
@JAtkin Rzeczywiście!
Conor O'Brien
4
Możesz uratować bajt dzięki curry
Patrick Roberts
13

Makro preprocesora C, 34

  • 1 bajt zapisany dzięki @TobySpeight
#define f(a,b)a?"AB":b?"ACD":"ACE"

Wypróbuj online .

Cyfrowa trauma
źródło
9

Haskell, 28 bajtów

x#y|x="AB"|y="ACD"|1<2="ACE"

Przykład użycia: False # True-> "ACD".

Wykorzystanie wartości wejściowych bezpośrednio jako osłon.

nimi
źródło
9

MATL , 15 17 bajtów

?'AB'}'AC'69i-h

Wejścia są w osobnych liniach 0lub są 1w osobnych liniach. Alternatywnie, 0może być zastąpione przez F(Mátl użytkownika false) oraz 1przez T(Mátl użytkownika true).

Wypróbuj online!

?           % if C1 (implicit input)
  'AB'      %   push 'AB'
}           % else
  'AC'      %   push 'AC'
  69        %   push 69 ('E')
  i-        %   subtract input. If 1 gives 'D', if 0 leaves 'E'
  h         %   concatenate horizontally
            % end if (implicit)
Luis Mendo
źródło
8

Brainfuck, 65 bajtów

Zakłada się, że C1 i C2 są wprowadzane jako nieprzetworzone 0 lub 1 bajtów. na przykład

echo -en '\x00\x01' | bf foo.bf

Gra w golfa:

++++++++[>++++++++<-]>+.+>+>,[<-<.>>-]<[<+.+>>,[<-<.>>-]<[<+.>-]]

Nie golfowany:

                                      Tape
                                      _0
++++++++[>++++++++<-]>+.+  print A    0 _B
>+>,                       read C1    0 B 1 _0  or  0 B 1 _1
[<-<.>>-]<                 print B    0 B _0 0  or  0 B _1 0
[<+.+>>                    print C    0 D 1 _0
    ,                      read C2    0 D 1 _0  or  0 D 1 _1
    [<-<.>>-]<             print D    0 D _0 0  or  0 D _1 0
    [<+.>-]                print E    0 D _0    or  0 E _0
]

Uważam, że warto zauważyć, że rozwiązanie to jest w rzeczywistości opiera się na wyrwanie się z podczas pętli.

Promień
źródło
7

NTFJ , 110 bajtów

##~~~~~#@|########@|~#~~~~~#@*(~#~~~~#~@*########@^)~#~~~~##@*##~~~~~#@|########@|(~#~~~#~~@*):~||(~#~~~#~#@*)

Bardziej czytelny:

##~~~~~#@|########@|~#~~~~~#@*(~#~~~~#~@*########@^)~#~~~~##@*##~~~~~#@|########@|(~#~~~#~~@*
):~||(~#~~~#~#@*)

To z pewnością było zabawne. Wypróbuj tutaj , używając dwóch znaków ( 0lub 1) jako danych wejściowych.

Dzięki zastosowaniu metody ETHProduction do konwersji na 0, 1 (znaki) na bity staje się to prostsze.

##~~~~~#@|########@|

To jest ta metoda. Pushing 193 ( ##~~~~~#@), NANDing it ( |) najwyższą wartością wejściową (w tym przypadku kod pierwszego znaku, 48 lub 49). Daje to 254 dla 1 i 255 dla 0. NANDOWANIE z 255 ( ########@) daje 0 lub 1 bit zgodnie z danymi wejściowymi.

~#~~~~~#@*

Wyświetla to A, ponieważ wszystkie dane wejściowe zaczynają się od A. *wyskakuje Apodczas drukowania, więc stos pozostaje niezmieniony w stosunku do poprzedniego stanu.

(~#~~~~#~@*########@^)

Przypadek 1: pierwszy bit to 1i (aktywuje kod w środku. ~#~~~~#~@*drukuje B, ########@^wypycha 255 i przeskakuje do tej pozycji w kodzie. Jest to koniec programu i kończy się.

Przypadek 2: pierwszy bit to 0. (przeskakuje do )i kod jest kontynuowany.

~#~~~~##@*

Wyświetla to C, ponieważ jest to następny znak.

##~~~~~#@|########@|

Konwertuje to nasze drugie wejście na nieco.

(~#~~~#~~@*)

Jeśli nasz drugi bit to 1, przystępujemy do drukowania E.

:~||

Jest to reprezentacja NAND Boolean negacji naszej bit: A NAND (0 NAND A) = NOT A.

(~#~~~#~#@*)

Aktywuje się teraz, jeśli bit był a 0, i drukuje E.

Conor O'Brien
źródło
5

Pyth, 16 bajtów

+\A?Q\B+\C?E\D\E

Zestaw testowy

Trójce!

Wyjaśnienie:

+\A              Start with an A
?Q\B             If the first variable is true, add a B and break.
+\C              Otherwise, add a C and
?E\D             If the second variable is true, add a D and break.
\E               Otherwise, add a E and finish.

Wprowadź dwa kolejne wiersze.

isaacg
źródło
3
O, mistrzu pytań, podaj nam sposoby tego programu. ;)
Conor O'Brien
5

CJam, 15 16 17 bajtów

'Ali'B'C'Eli-+?

Wypróbuj online!

Jeden bajt wolny dzięki @randomra i jeden bajt wolny dzięki @Dennis

Wyjaśnienie:

'A                  e# push "A"
  li                e# read first input as an integer
    'B              e# push "B" 
      'C            e# push "C"
        'E          e# push "E"
          li-       e# leave "E" or change to "D" according to second input
             +      e# concatenate "C" with "E" or "D"
              ?     e# select "B" or "C..." according to first input

Stara wersja (16 bajtów):

'Ali'B{'C'Eli-}?

Wyjaśnienie:

'A                  e# push character "A"
               ?    e# if-then-else
  li                e# read first input as an integer. Condition for if
    'B              e# push character "B" if first input is true
      {       }     e# execute this if first input is false
       'C           e# push character "C"
         'E         e# push character "E"
           li       e# read second input as an integer
             -      e# subtract: transform "E" to "D" if second input is true
                    e# implicitly display stack contents
Luis Mendo
źródło
5
Nasi dobrzy przyjaciele Ali i Eli!
Conor O'Brien
5

Pyth, 13 znaków, 19 bajtów

.HC@"૎્««"iQ2

Pobiera dane wejściowe w formie [a, b]

Wyjaśnienie

               - autoassign Q = eval(input())
           iQ2 -    from_base(Q, 2) - convert to an int
   @"૎્««"    -   "૎્««"[^]
  C            -  ord(^)
.H             - hex(^)

Wypróbuj tutaj

Lub użyj pakietu testowego

niebieski
źródło
2
Przynajmniej w UTF-8 waży 19 bajtów.
Dennis
1
bytesizematters używa całkowicie zindywidualizowanego sposobu liczenia bajtów, który nie odpowiada (i nie może ) faktycznemu kodowaniu. Liczy kwadratowe rzeczy jako 2 bajty każdy (3 bajty w UTF-8) i «jako 1 bajt każdy (2 bajty w UTF-8). Zarówno wci to zgadza się, że ma 19 bajtów.
Dennis
4

C, 76 bajtów

Zmieniłem nazwę c1na c, c2na Ci resultna r. Programiści C starają się unikać goto. Jeśli kiedykolwiek masz problum z absurdalną składnią w C, najprawdopodobniej dzieje się tak, ponieważ nie używałeś goto.

char r[4]="A";if(c){r[1]=66;goto e;}r[1]=67;if(C){r[2]=68;goto e;}r[2]=69;e:

Bez golfa

char r[4] = "A";
if(c1){
    r[1] = 'B';
    goto end;
}
r[1] = 'C';
if(c2){
    r[2] = 'D';
    goto end;
}
r[2] = 'E';
end:
MegaTom
źródło
Można zacząć char r[4]="A";? Moje C jest zardzewiałe.
LarsH
Czy to nie jest naprawdę niedorzeczny sposób zadeklarowania literału smyczkowego?
Tamoghna Chowdhury
@TamoghnaChowdhury Sortuj. Literałów łańcuchowych nie można zapisywać. Jest to tablica, która jest następnie inicjalizowana przez literał „A”. Ponieważ „A” ustawia tylko dwa pierwsze bajty, reszta jest inicjowana zgodnie z regułami dla obiektów o czasie trwania statycznym (czyli w tym przypadku 0). [C99 6.7.8 / 22]
Ray
1
Można zapisać 22 bajtów przez zmianę listy inicjalizacji "AC"i zastępując wszystko od r[1]=67do r[2]=69;zr[2]=c2?68:69;
Ray
4

C, 41 bajtów

Nie jestem pewien, czy pytanie wymaga programu, funkcji lub fragmentu kodu.
Oto funkcja:

f(a,b){a=a?16961:4473665|b<<16;puts(&a);}

Pobiera dane wejściowe w dwóch parametrach, które muszą wynosić 0 lub 1 (no cóż, bmuszą), i drukuje na standardowe wyjście.

Zestawy ado jednego 0x4241, 0x454341lub 0x444341. Po wydrukowaniu jako ciąg znaków w małym systemie ASCII daje wymagane dane wyjściowe.

ugoren
źródło
4

R , 41 39 37 bajtów

pryr::f(c("ACD","ACE","AB")[1+a+a^b])

Wypróbuj online!

W R TRUEi FALSEsą przymuszane do 1i 0odpowiednio przy próbie użycia ich jako liczb. Możemy przekonwertować te numery indeksów 1, 2oraz 3poprzez formuły 1+a+a^b.

  a  |   b  | 1+a+a^b
TRUE | TRUE | 1+1+1^1 = 3
TRUE | FALSE| 1+1+1^0 = 3
FALSE| TRUE | 1+0+0^1 = 1
FALSE| FALSE| 1+0+0^0 = 2

Wartości te są następnie używane do wskaźnika listy ACD, ACE, ABw celu uzyskania prawidłowej produkcji.

Zaoszczędź dwa bajty dzięki JayCe.

Jeśli zamiast tego wolisz wersję z ifinstrukcją, istnieje 41 bajtów:

pryr::f(`if`(a,"AB",`if`(b,"ACD","ACE")))

Wypróbuj online!

rturnbull
źródło
@JayCe Dzięki, zaktualizowałem odpowiedź!
rturnbull
3

Mathematica, 35 30 bajtów

If[#,"AB",If[#2,"ACD","ACE"]]&

Bardzo proste. Funkcja anonimowa.

LegionMammal978
źródło
3

Siatkówka, 22 bajty

1.+
AB
.+1
ACD
.+0
ACE

Wypróbuj online

andlrc
źródło
1
retina.tryitonline.net/… . Przedrostek ^z m`, aby działał w przypadku wprowadzania wieloliniowego, co nie jest konieczne w przypadku pytania, ale ułatwia testowanie.
Cyfrowa trauma
Myślę, że możesz zaoszczędzić 3 bajty, usuwając przestrzeń między dwoma wejściami.
CalculatorFeline
3

JavaScript, 38 bajtów

Użyj no-delimiter 0lub 1zamiast false/true

_=>"ACE ACD AB AB".split` `[+('0b'+_)]
nazwa_użytkownika.ak
źródło
1
Możesz użyć split` ` zamiastsplit(" ")
andlrc
Możesz także użyć +('0b'+prompt())zamiastparseInt(prompt(),2)
andlrc
3

ArnoldC , 423 bajty

IT'S SHOWTIME
HEY CHRISTMAS TREE a
YOU SET US UP 0
HEY CHRISTMAS TREE b
YOU SET US UP 0
BECAUSE I'M GOING TO SAY PLEASE a
BECAUSE I'M GOING TO SAY PLEASE b
TALK TO THE HAND "ABD"
BULLSHIT
TALK TO THE HAND "ABE"
YOU HAVE NO RESPECT FOR LOGIC
BULLSHIT
BECAUSE I'M GOING TO SAY PLEASE b
TALK TO THE HAND "ACD"
BULLSHIT
TALK TO THE HAND "ACE"
YOU HAVE NO RESPECT FOR LOGIC
YOU HAVE NO RESPECT FOR LOGIC
YOU HAVE BEEN TERMINATED

Ponieważ wydaje się, że ArnoldC nie ma formalnych danych wejściowych, po prostu zmień pierwsze 2 YOU SET US UPwartości na 0 lub 1 zamiast tego.

Wyjaśnienie

To tylko cała masa instrukcji warunkowych, które uwzględniają wszystkie możliwe wyniki. Dlaczego możesz zapytać? Cóż, ArnoldC tak naprawdę nie rozumie napisów. Nie może nawet łączyć łańcuchów! W rezultacie musimy skorzystać z bardziej ... nieefektywnej ... metody.

Kat
źródło
Er, wyjście powinno być „AB”, jeśli a jest prawdziwe, a nie „ABD” / „ABE”. To powinno skrócić Twój kod!
Toby Speight,
3

Java, 28 bajtów

Taki sam szablon jak wiele odpowiedzi. typ to BiFunction<Boolean,Boolean, String>.

(c,d)->c?"AB":d?"ACD":"ACE"
Andreas
źródło
Wiem, że minęły prawie dwa lata, ale (c,d)->można zagrać w golfa o 1 bajt, c->d->gdy używasz java.util.function.Function<Boolean, java.util.function.Function<Boolean, String>>.
Kevin Cruijssen
2

Pyth, 21 bajtów

@c"ACE ACD AB AB"diz2

Wypróbuj tutaj!

Dane wejściowe są przyjmowane jako 0 lub 1 zamiast true / false, gdy C1 jest na pierwszym miejscu.

Wyjaśnienie

Wystarczy skorzystać z faktu, że są tylko 4 możliwe wyniki. Działa, interpretując dane wejściowe jako binarne, konwertując je na bazę 10 i wykorzystując je do wybrania właściwego wyniku z ciągu wyszukiwania.

@c „ACE ACD AB AB” diz2 # z = wejście

                  iz2 # Konwertuj dane binarne na bazę 10
 c „ACE ACD AB AB” d # Podziel ciąg znaków w spacjach
@ # Pobierz element na indeks
Denker
źródło
2

Y , 20 bajtów

W przypadku, gdy pierwsze wejście jest jedno, pobierane jest tylko jedno wejście. Zakładam, że takie zachowanie jest dozwolone. Wypróbuj tutaj!

'B'AjhMr$'C'E@j-#rCp

Nie golfowany:

'B'A jh M
   r$ 'C 'E@ j - # r
 C p

Wyjaśniono:

'B'A

To popycha znaki Bnastępnie Ado komina.

jh M

To zajmuje jedno wejście, zwiększa je, wyskakuje i przesuwa się o tę liczbę sekcji.

Przypadek 1: j1 = 0. To jest bardziej interesujące. r$odwraca stos i wyskakuje wartość, 'C'Ewypycha znaki Ci E. @konwertuje Ena swój numeryczny odpowiednik, odejmuje drugie wejście i przekształca je w znak. rcofa stos. Następnie program widzi C-link i przechodzi do następnego linku p, i drukuje stos.

Przypadek 2: program przechodzi do ostatniego łącza p, które jedynie drukuje cały stos.

Conor O'Brien
źródło
2

PowerShell, 40 bajtów

param($x,$y)(("ACE","ACD")[$y],"AB")[$x]

Zagnieżdżone tablice indeksowane według danych wejściowych. W PowerShell, $true/ 1i $false/ 0są praktycznie równoważne (dzięki bardzo luźnemu rzutowaniu), dzięki czemu ładnie indeksuje się do tablicy dwuelementowej. Jest to tak blisko trójki, jak PowerShell, i używałem jej wiele razy w golfie.

Przykłady

PS C:\Tools\Scripts\golfing> .\do-while-false.ps1 1 1
AB

PS C:\Tools\Scripts\golfing> .\do-while-false.ps1 1 0
AB

PS C:\Tools\Scripts\golfing> .\do-while-false.ps1 0 1
ACD

PS C:\Tools\Scripts\golfing> .\do-while-false.ps1 0 0
ACE
AdmBorkBork
źródło
2

K, 37 bajtów

{?"ABCDE"@0,x,(1*x),(2*~x),(~x)*3+~y}
kirbyfan64sos
źródło
2

Vitsy , 26 bajtów

Oczekuje danych wejściowych jako 1s lub 0s przez STDIN z separacją nowej linii.

W([1m;]'DCA'W(Zr1+rZ
'BA'Z

Podczas tego wyzwania odkryłem poważny problem z oświadczeniami if. D: Jest to opublikowane z uszkodzoną wersją, ale działa dobrze. (Zaktualizuję to po rozwiązaniu problemu) Należy pamiętać, że zaktualizowałem Vitsy z poprawką if / ifnot. Ta zmiana nie daje mi żadnej korzyści, a jedynie wyjaśnienie.

Wyjaśnienie:

W([1m;]'DCA'W(Zr1+rZ
W                      Get one line from STDIN (evaluate it, if possible)
 ([1m;]                If not zero, go to the first index of lines of code (next line)
                       and then end execution.
       'DCA'           Push character literals "ACD" to the stack.
            W          Get another (the second) line from STDIN.
             (         If not zero, 
do the next instruction.
              Z        Output all of the stack.
               r1+r    Reverse the stack, add one (will error out on input 0, 1), reverse.
                   Z   Output everything in the stack.

'BA'Z
'BA'                   Push character literals "AB" to the stack.
    Z                  Output everything in the stack.

Wypróbuj online!

Addison Crump
źródło
2

wosk pszczeli , 26 bajtów

Tłumaczenie 0jako fałszywe, 1jak prawdziwe.

E`<
D`d"`C`~<
_T~T~`A`"b`B

Wynik:

julia> beeswax("codegolfdowhile.bswx",0,0.0,Int(20000))
i1
i1
AB
Program finished!

julia> beeswax("codegolfdowhile.bswx",0,0.0,Int(20000))
i1
i0
AB
Program finished!

julia> beeswax("codegolfdowhile.bswx",0,0.0,Int(20000))
i0
i1
ACD
Program finished!

julia> beeswax("codegolfdowhile.bswx",0,0.0,Int(20000))
i0
i0
ACE
Program finished!

Sklonuj mój interpreter wosku pszczelego z mojego repozytorium Github .

ML
źródło
Jestem pewien, że nie potrzebujesz cytatów.
undergroundmonorail
@undergroundmonorail: Dobra, zaktualizuję moje rozwiązanie. Dzięki.
ML
2

C, 47 45 bajtów

Ponieważ są tylko 3 różne wyniki, możemy wybrać jeden z trzech ciągów:

char*f(c,d){return"AB\0 ACE\0ACD"+(!c<<d+2);}

Podziękowania dla Hermana L za 2 bajty

Próbny

#include<stdio.h>
int main()
{
    printf("%s\n%s\n%s\n%s\n",
           f(1,1),
           f(1,0),
           f(0,1),
           f(0,0));
}
Toby Speight
źródło
1
-2 bajty:char*f(c,d){return"AB\0 ACE\0ACD"+(!c<<d+2);}
Herman L
link do TIO
tylko ASCII
1

Perl, 23 bajty

say<>>0?AB:<>>0?ACD:ACE

Wymaga -E| -M5.010flag i przyjmuje dane wejściowe jako 1 i 0:

$ perl -E'say<>>0?AB:<>>0?ACD:ACE' <<< $'0\n0'
ACE
$ perl -E'say<>>0?AB:<>>0?ACD:ACE' <<< $'0\n1'
ACD
$ perl -E'say<>>0?AB:<>>0?ACD:ACE' <<< $'1\n0'
AB

Alternatywne rozwiązanie, które wymaga -pi wynosi 22 + 1 = 23 bajty:

$_=/^1/?AB:/1/?ACD:ACE
perl -pe'$_=/^1/?AB:/1/?ACD:ACE' <<< '0 1'
andlrc
źródło
say-<>?AB:-<>?ACD:ACEjest dwa bajty krótszy.
nwellnhof,
1

05AB1E , 23 20 bajtów

Kod:

Ii"AB"?q}"AC"?69I-ç?

Wypróbuj online!

Adnan
źródło
1
Prawdopodobnie jest to starożytna wersja 05AB1E, ale teraz może mieć 14 bajtów: i„ABë„AC69I-çJ Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Kevin Cruijssen
1
@KevinCruijssen Nice! To rzeczywiście starożytna wersja 05AB1E. Język miał tu około trzech miesięcy (nie miał nawet dorozumianego wkładu).
Adnan,
1
Tak, rzeczywiście byłem już zdezorientowany co do prowadzenia I. ; p
Kevin Cruijssen
1

Japt, 19 bajtów

"A{U?'B:'C+(V?'D:'E

Przetestuj online!

Ciekawostka: byłoby 16 bajtów, gdyby nie błąd:

"A{U?"B:C{V?"D:E
ETHprodukcje
źródło
Błędy są najgorsze: |
Conor O'Brien,
2
@ CᴏɴᴏʀO'Bʀɪᴇɴ Pozwól mi sprawdzić, czy mogę wykopać starszą wersję, która nie zawierała tego błędu. Wtedy 16 bajtów byłoby uzasadnionych.
ETHprodukcje
1
Jaki jest błąd?
CalculatorFeline
@CalculatorFeline Uważam, że takie zagnieżdżone ciągi nie transponują się z jakiegoś powodu.
ETHproductions