Die Do While False-Redewendung

47

Do While False

Bei der heutigen Arbeit beschrieb einer meiner Kollegen den Use-Case für do while (false). Die Person, mit der er sprach, fand das albern und so einfach, wenn Aussagen viel besser wären. Wir verbrachten dann die Hälfte unseres Tages damit, darüber zu diskutieren, wie wir etwas Äquivalentes schreiben können zu:

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);

Dies ist eine Redewendung, die häufig in c vorkommt. Ihr Programm sollte abhängig von den Bedingungen die gleiche Ausgabe wie der folgende Pseudocode erzeugen.

do
{
   result += "A";

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

   result += "C"

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

   result += "E";

}
while(false);

print(result);

Daher könnte die Eingabe sein:

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

und die Ausgabe sollte sein:

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

Dies ist Code-Golf, daher werden die Antworten nach Bytes beurteilt. Standardlücken sind verboten.

Ja, dies ist eine einfache, aber wir werden hoffentlich einige kreative Antworten finden. Ich hoffe, dass die Einfachheit die Menschen dazu ermutigt, Sprachen zu verwenden, mit denen sie weniger vertraut sind.

Lachender Mann
quelle
Muss die Ausgabe in Großbuchstaben erfolgen oder ist auch Kleinbuchstaben zulässig?
Adnan
7
Abgesehen von der Debatte mit Ihrem Kollegen scheint es mir, dass Sie das Gleiche mit einer Methode erreichen könnten, mit der return resultanstelle von break. Dann erhalten Sie auch die Vorteile der Wiederverwendbarkeit und der Vereinfachung des Anrufcodes. Aber vielleicht fehlt mir etwas.
jpmc26
3
Ich wusste nicht, dass dies eine Redewendung in C war ...
Mehrdad
5
@Mehrdad einige Leute tun dies, anstatt zu gotoverwenden, gotoist schlechte Form :)
Seth
2
Das einzige Mal, dass ich jemals benutzt habe, do{}while(false)sind Makros. Ein einfaches ifgenügt nicht, weil es schlecht mit der elseUmgebung interagiert , die vorhanden sein kann. Ohne Makro können Sie auch das dound entfernen while.
NWP

Antworten:

19

Python 3, 31

Dank xnor 1 Byte gespeichert.

Nur ein Byte von ES6 entfernt. : / Dummes Python und seine lange anonyme Funktionssyntax.

Hurra für einen Liner!

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

Testfälle:

assert f(1, 1) == "AB"
assert f(1, 0) == "AB"
assert f(0, 1) == "ACD"
assert f(0, 0) == "ACE"
Morgan Thrapp
quelle
7
Wenn Sie nachbestellen x*"AB", können Sie den Platz danach sparen.
Xnor
2
Entschuldigung, Ihre lange, anonyme Funktionssyntax ist der Tod von Python: P
Conor O'Brien
5
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ich wusste, dass etwas Python zurückhalten musste. Ich werde ein PEP ASAP einreichen.
Morgan Thrapp
2
Tun Sie das, und ich werde Schlangenfallen bestellen
Conor O'Brien
9
Ein PEP λals Synonym lambdawäre großartig :)
Robert Grant
13

JavaScript ES6, 30 26 25 Bytes

Eine einfache anonyme Funktion mit zwei Eingaben. Zuweisen einer aufzurufenden Variablen. Update : Lass uns auf den Index-Zug springen. Das spart 4 Bytes. Ich habe meinen Vorsprung vor Python gesichert . Durch Aufrufen der Funktion wurde ein Byte gespeichert. nennen wie (...)(a)(b). Vielen Dank Patrick Roberts!

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

Alte Originalversion, 30 Bytes (enthalten, um nicht in die Python-Antwort einzuschmelzen (;):

(a,b)=>"A"+(a?"B":b?"CD":"CE")
Conor O'Brien
quelle
Das ist nicht so schlau ...
theonlygusti
15
@theonlygusti Dies ist ein Code-Golf, kein Beliebtheitswettbewerb. Warum sollten Bytes auch schlau sein, wenn es eine präzisere Lösung gibt?
Conor O'Brien
Ich mag deine Wahl der Nase:b?
J Atkin
@JAtkin In der Tat!
Conor O'Brien
4
Sie können ein Byte mit Currying
Patrick Roberts
9

Haskell, 28 Bytes

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

Anwendungsbeispiel: False # True-> "ACD".

Verwenden Sie die Eingabewerte direkt als Wächter.

nimi
quelle
9

MATL , 15 - 17 Bytes

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

Eingänge sind 0oder 1in separaten Zeilen. Alternativ 0kann durch F(MATLs false) und 1durch T(MATLs true) ersetzt werden.

Probieren Sie es 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
quelle
8

Brainfuck, 65 Bytes

Dies setzt voraus, dass C1 und C2 als unformatierte 0 oder 1 Bytes eingegeben werden. z.B

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

Golf gespielt:

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

Ungolfed:

                                      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
]

Ich glaube , es erwähnenswert, dass diese Lösung ist in der Tat basiert auf Ausbrechen der While - Schleifen.

Strahl
quelle
7

GNU Sed, 21

/^1/cAB
/1$/cACD
cACE

Ideone .

Digitales Trauma
quelle
7

NTFJ , 110 Bytes

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

Besser lesbar:

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

Das war auf jeden Fall unterhaltsam. Probieren Sie es hier aus und geben Sie zwei Zeichen ( 0oder 1) ein.

Mit der Methode von ETHProduction zur Umwandlung von 0, 1 (Zeichen) in Bits wird dies einfacher.

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

Dies ist die genannte Methode. ##~~~~~#@Drücken Sie 193 ( ) und NANDING ( |) mit dem oberen Eingabewert (in diesem Fall dem ersten Zeichencode, a 48 oder 49). Dies ergibt 254 für 1 und 255 für 0. Eine NAND-Verknüpfung mit 255 ( ########@) ergibt je nach Eingabe ein 0- oder 1-Bit.

~#~~~~~#@*

Dies gibt ein aus A, da alle Eingaben mit beginnen A. *Popup Abeim Drucken, so dass der Stapel unverändert zum vorherigen Status ist.

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

Fall 1: Das erste Bit ist 1und (aktiviert den Code im Inneren. ~#~~~~#~@*druckt Bund ########@^drückt 255 und springt zu dieser Position im Code. Da dies das Ende des Programms ist, wird es beendet.

Fall 2: Das erste Bit ist 0. (springt zu )und der Code wird fortgesetzt.

~#~~~~##@*

Dies gibt ein aus C, da dies das nächste Zeichen ist.

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

Dies wandelt unsere zweite Eingabe in ein bisschen um.

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

Wenn unser zweites Bit eine 1 ist, drucken wir eine E.

:~||

Dies ist die NAND - Darstellung der Booleschen Negation unserer Bit: A NAND (0 NAND A) = NOT A.

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

Dies wird jetzt aktiviert, wenn das Bit a war 0, und wird gedruckt E.

Conor O'Brien
quelle
5

Pyth, 16 Bytes

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

Testsuite

Ternaries!

Erläuterung:

+\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.

Eingabe auf zwei aufeinander folgenden Zeilen.

isaacg
quelle
3
Oh Pythmaster, teile uns die Wege dieses Programms mit. ;)
Conor O'Brien
5

CJam, 15 16 17 Bytes

'Ali'B'C'Eli-+?

Probieren Sie es online!

Ein Byte weniger dank @randomra und ein Byte weniger dank @Dennis

Erläuterung:

'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

Alte Version (16 Bytes):

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

Erläuterung:

'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
quelle
5
Unsere guten Freunde Ali und Eli!
Conor O'Brien
5

Pyth, 13 Zeichen, 19 Bytes

.HC@"૎્««"iQ2

Übernimmt Eingaben in Form [a, b]

Erläuterung

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

Probieren Sie es hier aus

Oder verwenden Sie eine Testsuite

Blau
quelle
2
Zumindest in UTF-8 wiegt dies 19 Bytes.
Dennis
1
bytesizematters verwendet eine vollständig erfundene Methode zum Zählen von Bytes, die einer tatsächlichen Codierung nicht entspricht (und nicht entsprechen kann ). Die quadratischen Elemente werden als jeweils 2 Byte (3 Byte in UTF-8) und «als jeweils 1 Byte (2 Byte in UTF-8) gezählt. Beides wcund das sind sich einig, dass es 19 Bytes sind.
Dennis
4

C 76 Bytes

Ich habe umbenannt c1in c, c2nach Cund resultnach r. C-Programmierer gehen zum Äußersten, um dies zu vermeiden goto. Wenn Sie jemals ein Problem mit absurder Syntax in C haben, liegt dies höchstwahrscheinlich daran, dass Sie es nicht verwendet haben 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:

Ungolfed

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
quelle
Kannst du mit anfangen char r[4]="A";? Mein C ist rostig.
LarsH
Ist das nicht eine wirklich lächerliche Art, ein String-Literal zu deklarieren?
Tamoghna Chowdhury
@ TamoghnaChowdhury Art von. String-Literale sind nicht beschreibbar. Es ist ein Array, das dann mit dem String-Literal "A" initialisiert wird. Da "A" nur die ersten beiden Bytes setzt, wird der Rest nach den Regeln für Objekte statischer Dauer (also in diesem Fall 0) initialisiert. [C99 6.7.8 / 22]
Ray
1
Sie können 22 Bytes sparen, indem Sie die Initialisierungsliste auf ändern "AC"und alles von r[1]=67bis r[2]=69;durchr[2]=c2?68:69;
Ray
4

C 41 Bytes

Ich bin mir nicht sicher, ob die Frage ein Programm, eine Funktion oder einen Codeausschnitt erfordert.
Hier ist eine Funktion:

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

Es erhält die Eingabe in zwei Parametern, die 0 oder 1 sein müssen (naja, bmuss), und druckt auf stdout.

Stellt aauf 0x4241, 0x454341oder ein 0x444341. Wenn es als Zeichenfolge gedruckt wird, liefert es auf einem Little-Endian-ASCII-System die erforderliche Ausgabe.

ugoren
quelle
4

R , 41 39 37 Bytes

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

Probieren Sie es online!

In R, TRUEund FALSEsind gezwungen zu 1und 0jeweils , wenn Sie versuchen , sie als Zahlen zu verwenden. Wir können diese Zahlen auf Indizes umwandeln 1, 2und 3durch die Formel 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

Diese Werte werden dann zum Indizieren der Liste verwendet ACD, ACE, ABdie korrekte Ausgabe zu erhalten.

Zwei Bytes dank JayCe gespart.

Wenn Sie stattdessen eine Version mit einer ifAnweisung bevorzugen , gilt für 41 Bytes Folgendes:

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

Probieren Sie es online!

rturnbull
quelle
@ JayCe Danke, ich habe die Antwort aktualisiert!
Rturnbull
3

Mathematica, 35-30 Bytes

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

Sehr einfach. Anonyme Funktion.

LegionMammal978
quelle
3

Netzhaut, 22 Bytes

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

Probieren Sie es online

undlrc
quelle
1
retina.tryitonline.net/… . Setzen Sie das Präfix ^mit m`, damit es für mehrzeilige Eingaben funktioniert. Dies ist für die Frage nicht erforderlich, erleichtert jedoch das Testen.
Digitales Trauma
Ich denke, Sie können 3 Bytes sparen, indem Sie den Raum zwischen den zwei Eingängen entfernen.
CalculatorFeline
3

JavaScript, 38 Bytes

Verwenden Sie kein Trennzeichen 0oder 1anstelle von false/true

_=>"ACE ACD AB AB".split` `[+('0b'+_)]
Benutzername.ak
quelle
1
Sie können split` ` anstelle vonsplit(" ")
andlrc
Sie können auch +('0b'+prompt())anstelle vonparseInt(prompt(),2)
andlrc
3

Caché ObjectScript , 27 Byte

"A"_$s(x:"B",y:"CD",1:"CE")
adaptun
quelle
3

ArnoldC , 423 Bytes

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

Da ArnoldC keine formale Eingabe zu haben scheint, ändern Sie YOU SET US UPstattdessen einfach die ersten 2 Werte in entweder 0 oder 1.

Erläuterung

Dies ist nur eine ganze Reihe von bedingten Anweisungen, die alle möglichen Ausgaben berücksichtigen. Warum, fragst du dich vielleicht? Nun, ArnoldC hat kein wirkliches String-Verständnis. Es kann nicht einmal Strings verketten! Infolgedessen müssen wir auf die ineffizientere Methode zurückgreifen.

Kat
quelle
Er, die Ausgabe sollte "AB" sein, wenn a wahr ist, nicht "ABD" / "ABE". Das sollte Ihren Code kürzer machen!
Toby Speight
3

Java, 28 Bytes

Gleiche Kesselplatte wie viele Antworten. Typ ist BiFunction<Boolean,Boolean, String>.

(c,d)->c?"AB":d?"ACD":"ACE"
Andreas
quelle
Ich weiß, es ist schon fast zwei Jahre her, aber (c,d)->kann von 1 Byte bis Golf gespielt werden, c->d->wenn Sie eine verwenden java.util.function.Function<Boolean, java.util.function.Function<Boolean, String>>.
Kevin Cruijssen
2

Pyth, 21 Bytes

@c"ACE ACD AB AB"diz2

Probieren Sie es hier aus!

Die Eingabe wird als 0 oder 1 anstelle von wahr / falsch genommen, während C1 an erster Stelle steht.

Erläuterung

Nur mit der Tatsache, dass es nur 4 mögliche Ergebnisse gibt. Wird verwendet, indem die Eingabe als binär interpretiert, in Basis 10 konvertiert und damit das richtige Ergebnis aus der Suchzeichenfolge ausgewählt wird.

@c "ACE ACD AB AB" diz2 # z = Eingabe

                  iz2 # Binäreingabe in Basis 10 konvertieren
 c "ACE ACD AB AB" d # Zeichenfolge an Leerzeichen teilen
@ # Liefert das Element am Index
Denker
quelle
2

Y , 20 Bytes

Für den Fall, dass die erste Eingabe eine ist, wird nur eine Eingabe verwendet. Ich gehe davon aus, dass dieses Verhalten erlaubt ist. Probieren Sie es hier aus!

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

Ungolfed:

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

Erklärt:

'B'A

Dies schiebt die Zeichen Bdann Aauf den Stapel.

jh M

Dies nimmt eine Eingabe, inkrementiert sie, fügt sie ein und bewegt sich über diese Anzahl von Abschnitten.

Fall 1: j1 = 0. Dies ist das interessantere. r$Kehrt den Stapel um und fügt einen Wert ein, 'C'Edrückt die Zeichen Cund E. @Konvertiert Ein sein numerisches Gegenstück, subtrahiert die zweite Eingabe von ihr und konvertiert sie wieder in ein Zeichen. rKehrt den Stapel um. Anschließend erkennt das Programm die C-Verknüpfung, wechselt zur nächsten Verknüpfung pund druckt den Stapel.

Fall 2: Das Programm springt zum letzten Link p, der lediglich den gesamten Stapel druckt.

Conor O'Brien
quelle
2

PowerShell, 40 Byte

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

Durch Eingabe indizierte verschachtelte Arrays. In PowerShell sind $true/ 1und $false/ 0praktisch gleichwertig (dank sehr loser Typumwandlung), sodass die Indizes in ein Array mit zwei Elementen umgewandelt werden können. Dies kommt einem Ternär wirklich so nahe wie PowerShell und ich habe es oft beim Golfen verwendet.

Beispiele

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
quelle
2

K, 37 Bytes

{?"ABCDE"@0,x,(1*x),(2*~x),(~x)*3+~y}
kirbyfan64sos
quelle
2

Vitsy , 26 Bytes

Erwartet Eingaben als 1s oder 0s durch STDIN mit einer Zeilenumbruchtrennung.

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

Ich habe tatsächlich ein ernstes Problem mit if-Anweisungen während dieser Herausforderung entdeckt. D: Dies ist mit der kaputten Version gepostet, aber es funktioniert gut. (Ich werde dies aktualisieren, nachdem ich das Problem behoben habe. ) Bitte beachten Sie, dass ich Vitsy mit einem Update von if / ifnot aktualisiert habe. Diese Änderung verschafft mir keinen Vorteil, nur Klarstellung.

Erläuterung:

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.

Probieren Sie es online!

Addison Crump
quelle
2

Bienenwachs , 26 Bytes

Interpretieren 0als falsch, 1als wahr.

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

Ausgabe:

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!

Klonen Sie meinen Bienenwachs-Interpreter aus meinem Github-Repository .

ML
quelle
Ich bin mir ziemlich sicher, dass Sie die Zitate nicht brauchen.
Undergroundmonorail
@undergroundmonorail: Okay, ich werde meine Lösung aktualisieren. Vielen Dank.
ML
2

C 47 45 Bytes

Da es nur drei verschiedene Ergebnisse gibt, können wir eine der drei folgenden Zeichenfolgen auswählen:

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

Danke an Herman L für 2 Bytes

Demo

#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
quelle
1
-2 Bytes:char*f(c,d){return"AB\0 ACE\0ACD"+(!c<<d+2);}
Herman L
Link zu TIO pls
ASCII
1

Perl, 23 Bytes

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

Benötigt das -E| -M5.010flag und nimmt die Eingabe als 1 und 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

Alternative Lösung, die -p22 + 1 = 23 Bytes benötigt und ist:

$_=/^1/?AB:/1/?ACD:ACE
perl -pe'$_=/^1/?AB:/1/?ACD:ACE' <<< '0 1'
undlrc
quelle
say-<>?AB:-<>?ACD:ACEist zwei Bytes kürzer.
Nwellnhof
1

05AB1E , 23 20 Bytes

Code:

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

Probieren Sie es online!

Adnan
quelle
1
Dies ist wahrscheinlich eine alte Version von 05AB1E, aber es können jetzt 14 Byte sein: i„ABë„AC69I-çJ Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Kevin Cruijssen
1
@ KevinCruijssen Schön! Dies ist in der Tat eine alte Version von 05AB1E. Die Sprache war hier ungefähr drei Monate alt (sie hatte nicht einmal implizite Eingaben).
Adnan
1
Ja, ich war in der Tat schon verwirrt über die Führung I. ; p
Kevin Cruijssen
1

Japt, 19 Bytes

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

Online testen!

Unterhaltsame Tatsache: Das wären 16 Bytes, wenn es keinen Fehler gäbe:

"A{U?"B:C{V?"D:E
ETHproductions
quelle
Bugs sind die schlimmsten: |
Conor O'Brien
2
@ CᴏɴᴏʀO'Bʀɪᴇɴ Mal sehen, ob ich eine ältere Version ausgraben kann, die diesen Bug nicht hatte. Dann wären die 16 Bytes echt.
ETHproductions
1
Was ist der Fehler?
CalculatorFeline
@CalculatorFeline Ich glaube, dass solche verschachtelten Zeichenfolgen aus irgendeinem Grund nicht transpilieren.
ETHproductions