Oreo? Nein ... Lutscher vielleicht?


46

Seit 2009 sind die Versionscodenamen von Android mit Süßwaren versehen. Android 1.5 ist Cupcake, Android 1.6 ist Donut, Android 2.0 ist Eclair, etc .. In der Tat sind die Versionsnamen alphabetisch!

C -> Cupcake
D -> Donut
E -> Eclair
F -> Froyo
G -> Gingerbread
H -> Honeycomb
I -> Ice Cream Sandwich
J -> Jellybean
K -> Kitkat
L -> Lollipop
M -> Marshmallow
N -> Nougat
O -> Oreo

In Ordnung:

Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jellybean, Kitkat, Lollipop, Marshmallow, Nougat, Oreo

Herausforderung

Schreiben Sie ein Programm / eine Funktion , die einen Buchstaben von Cbis annimmt Ound den entsprechenden Android-Versionscode ausgibt.

Spezifikationen

  • Standard I / O - Regeln gelten .
  • Standardlücken sind verboten .
  • Sie können entweder die Eingabe in Kleinbuchstaben oder in Großbuchstaben oder sogar in beiden unterstützen.
  • Die Ausgabe kann in Groß- / Kleinschreibung ( Cupcake) oder in Kleinschreibung ( eclair) erfolgen. Ice cream sandwichkann nach Belieben großgeschrieben werden. (Ich habe nicht erwartet, dass es so viel Verwirrung stiftet ...)
  • Bei dieser Herausforderung geht es nicht darum, den kürzesten Ansatz in allen Sprachen zu finden, sondern darum, den kürzesten Ansatz in jeder Sprache zu finden .
  • Ihr Code wird in Bytes bewertet , normalerweise in der Codierung UTF-8, sofern nicht anders angegeben.
  • Eingebaute Funktionen (Mathematica hat möglicherweise eins: P), die diese Sequenz berechnen, sind zulässig, es wird jedoch empfohlen, eine Lösung einzuschließen, die nicht auf einer eingebauten basiert.
  • Erklärungen, auch für "praktische" Sprachen, sind erwünscht .

Testfälle

Dies sind Großbuchstaben und Titelbuchstaben.

Input   Output

F       Froyo
I       Ice Cream Sandwich
J       Jellybean
N       Nougat
G       Gingerbread
L       Lollipop

In ein paar besseren Formaten:

F, I, J, N, G, L
f, i, j, n, g, l

F I J N G L
f i j n g l

8
@ Mr.Xcoder Sagst du, es ist kein Betrüger, weil es einfacher ist? Dies ist ein Betrug, gerade weil es eine einfachere Version einer bestehenden Frage ist. Wir haben diese Art von Frage bereits zu Tode gestellt und diese Frage bietet absolut nichts Neues oder Interessantes für das Genre.
Weizen-Zauberer

2
@ WheatWizard Ich denke, das erstere ist eine bessere Dupe, da die letztere Quelle eingeschränkt ist.
Mr. Xcoder

9
Es könnte ein Betrug einer anderen Herausforderung sein. Aber hilf mir zu erkennen, dass mein Monster nach einer Konvertierung von Zeichenketten in Symbole fragt (was zu Hash-basierten Lösungen führt). Dieser fragt nach dem Zeichen, das er eingeben soll.
Arnauld


5
@MagicOctopusUrn Ja, das habe ich auch gesehen. Leider nicht enthalten MARSHMALLOWund später.
mbomb007

Antworten:


14

Kohle , 73 Bytes

θ§⪪”%↖↙1¬¢/vy⁵⸿ψJPP±≔S×5Jρνξ–Gu ◧;Yx³F▶ψ;εB↥:P¹N﹪J$α✂χ✳⦄⟲*±¶Sp:ς↘V◧◧”x℅θ

Probieren Sie es online! I / O ist in Kleinbuchstaben. Basierend auf dieser ausführlichen Version . Erläuterung:

                Implicitly print:
θ               Input character
                Implicitly print:
   ”...”        Long compressed string "oneycombx...xingerbread"
  ⪪            Split on
        x       The string "x"
 §              Circularly indexed by
          ℅     Character code of
           θ    Input character

4
Ich ... was? Wie.
Magic Octopus Urn

@MagicOctopusUrn Leider war ich zu beschäftigt, um zu der Zeit eine Erklärung hinzuzufügen. Hoffe das reicht.
Neil

1
Oh wow, ich wusste nicht, dass es komprimierte Saiten gibt!
Magic Octopus Urn

Wie Holzkohle SOGL schlägt, ist einfach unglaublich.
Erik der Outgolfer

Jelly schlägt es immer noch: Freude: codegolf.stackexchange.com/a/140092/73675
Hugo H

14

Bash + Core Utils 131 128 122 117 Bytes.

Das Skript ist als Base64 codiert, da es Sonderzeichen enthält.

Akzeptiert den Android-Codenamen als ersten Positionsparameter nur in Kleinbuchstaben . Gibt den vollständigen Codenamen auch in Kleinbuchstaben zurück .

CiPBUeICicG5tJ8W5a0Pc/hYuw7hkNMSIYkAPjARkdgFrdbh3NJgTmB4gRPiiQDJAaOyBH4ki14C
QDeKRNQJ8IJYER411DAnx0SO4CAKYmFzZTMyICQwfHRyICdBLVo0NwonICdhLXoKICd8Z3JlcCBe
JDEK

Erklärung:

#�Q��������s�X����!�>0�������`N`x������~$�^@7�D�    ��X5�0'�D�� 
base32 $0|tr 'A-Z47
' 'a-z
 '|grep ^$1
  • Die ersten beiden Zeilen sind der Binär-Blob mit den Daten (weitere Informationen finden Sie am Ende der Antwort). Die erste Zeile ist leer, um Probleme mit Bash zu vermeiden, da sie andernfalls vermuten könnte, dass eine Binärdatei eingespeist wird.
  • base32 $0 codiert den Skriptinhalt mit Base32 mit dem Standardzeilenumbruch von 76 Zeichen.
  • tr 'A-Z47\n' 'a-z\n '(Beachten Sie, dass die \nals Literal Neue - Zeile geschrieben wird) , wird die Eingabe in Kleinbuchstaben und ersetzen 4 , 7 und \ndurch \n, Raum und Platz sind.
  • grep ^$1 gibt die Zeilen aus, die mit der Zeichenfolge übereinstimmen, die als erstes Argument für das Skript angegeben wurde.

Binärdaten

Dieser Oktett-Stream wurde gefälscht, damit er keine Zeilenumbrüche enthält. Wenn er gemäß RFC 4648 mit Base32 decodiert wird, ist die resultierende Zeichenfolge die Liste der Android-Codenamen (wobei 4 als Elementtrennzeichen und 7 als Leerzeichen verwendet werden). Unter seinen Besonderheiten beginnt es mit einem Newline-Zeichen und einem Hash ( #), so dass es sich als Kommentar verhält und daher vom Interpreter nicht ausgeführt wird.

Außerdem half mir der Standardzeilenumbruch auf 76 Zeichen dieser Base32-Implementierung, als ich die Elemente neu anordnete, um den Zeilenumbruch als eines der Ice Cream Sandwich- Leerzeichen zu verwenden.


Auch und ein wenig vom Thema geht, denke ich , dass Google sollte nicht in direkten kommerziellen Produkten im Android Kodenamen werben.


2
Schön, das ist eine wirklich coole Antwort! Willkommen auf der Seite :)
DJMcMayhem

Noch eine knallharte
Helio

1
Diese Version ist zumindest auf meinem System fehlerhaft (Bash 4.4.12, Coreutils 8.27). Denn fes gibt zwei Zeilen aus: eine mit froyound eine mit mysteriösen fgeyltmuzteibno.
MarSoft

1
@ MarSoft: Danke! Fest. Schade, dass ich jetzt ein Byte mehr brauche.
Helio

@ MarSoft: Gelöst! Jetzt mit den gleichen Bytes!
Helio


11

Bash + Core Utils (Grep): 132 130 Bytes

So einfach könnte es sein

grep ^$1<<<'Cupcake
Donut
Eclair
Froyo
Gingerbread
Honeycomb
Ice Cream Sandwich
Jellybean
Kitkat
Lollipop
Marshmallow
Nougat
Oreo'

1
Die Eingabe über ddist clever, aber können Sie sie als Skript speichern und $1stattdessen verwenden?
Dom Hastings

11

Jelly , 57 Bytes

Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y

Probieren Sie es online!

-5 Danke an Jonathan Allan .


Speichern Sie vier Bytes, indem Sie einen Platzhalter für die Leerzeichen in "ice cream sandwich" verwenden und Leerzeichen zum Teilen verwenden, zum Beispiel:Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Jonathan Allan

... tatsächlich machen, dass fünf Bytes (ich hatte "Lair" verwendet, wenn "Clair" im Wörterbuch ist):Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
Jonathan Allan

@ JonathanAllan danke ... warte warum sollte ich das brauchen F? oh, es liegt daran, dass ich als Zeichenfolge keine Zeichenfolge
eingebe

8

C ++, 206 201 198 Bytes

Vielen Dank an @sergiol für das Sparen von 3 Bytes!

#import<cstdio>
void f(int l){char*w[]={"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo"};printf("%c%s",l,w[l-67]);}

Probieren Sie es online!

C 173 Bytes

f(l){char*w[]={"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo"};printf("%c%s",l,w[l-67]);}

Nun, es hat als C ++ begonnen, aber jetzt ist es auch als C gültig, und einige Bytes können gespeichert werden, indem es als C kompiliert wird.

Probieren Sie es online!


1
Mein fehlgeschlagener Versuch, es zu verkürzen,
indem

@sergiol Danke! Damit konnte ich nach ein bisschen Golf drei Bytes einsparen.
Steadybox

4
#importin c ++? was vermisse ich hier
Abhinav Gauniyal

@AbhinavGauniyal: IIRC Ich denke, eine Kompilierungswarnung hat mir auch geraten, #import <cstdio>da das Fehlen von #include <stdio.h>; oder vielleicht irre ich mich
sergiol

@AbhinavGauniyal Es ist kein Standard-C ++, aber zumindest GCC und MSVC haben es.
Steadybox

7

JavaScript (ES6), 137 136 Bytes

1 Byte dank Neil gespeichert

c=>'CupcakeDonutEclairFroyoGingerbreadHoneycombIce Cream SandwichJellybeanKitkatLollipopMarshmallowNougatOreo'.match(c+'([a-z]| .)+')[0]

Demo


Können Sie das Leerzeichen nicht in den Zeichenbereich aufnehmen, wahrscheinlich mit \ s? habe nicht viel JS Regex verwendet
michi7x7

1
@ michi7x7 Er muss die Übereinstimmung bei einem Großbuchstaben anhalten, außer im Fall von Ice Cream Sandwich, obwohl ([a-z]| .)+(1 Byte sparen) sogar mit Ice Cream Sandwich in der Mitte der Zeichenfolge funktionieren würde (es würde fehlschlagen, wenn die Codenamen S erreichen obwohl).
Neil

@Neil gut, [a-z\s]+stimmt nicht mit Großbuchstaben überein. Ich weiß nur nicht, ob Sie das in JS tun können
michi7x7

@ michi7x7 Also wie würde es mit Ice Cream Sandwich funktionieren?
Neil

2
Verwenden Sie Ice cream sandwich, wie im Testfall (obwohl dies nicht Titel Fall ist)
michi7x7

5

Japt , 81 79 Bytes

Enthält einige Zeichen, die hier nicht angezeigt werden.

U+`Æ+tfÆ÷¯kef©fclairfê $ßdfey¬mbf­ ×Äm ÑØrfÁKÞ fkfo¥ipopfÂâÚaow`qf gUc

Probier es aus

  • 2 Bytes gespart dank Oliver .

Erläuterung

Implizite Eingabe von Großbuchstaben U.

Ein komprimierter String (alles zwischen den Backticks) der Namen, getrennt mit fund ohne Anfangsbuchstaben, wird qin ein Array aufgeteilt ( ) f.

Innerhalb dieses Arrays erhalten wir das Element am Index ( g) des UZeichencodes. (Ja, Index Wrapping!)

Wir hängen das an Uden resultierenden String an und geben ihn implizit aus.


1
Nett. Sie können ein paar Bytes speichern, wenn Sie fstattdessen bei Zeilenumbrüchen aufteilen: ethproductions.github.io/japt/…
Oliver

@Oliver: Oh, nett, danke :) Auf meinem Handy hätte ich das auf keinen Fall eine Weile lang mitbekommen (wenn überhaupt), wenn ich die Straße runtergegangen wäre.
Shaggy

5

Excel VBA, 137 134 132 Bytes

Anonymous VBE Direkt - Fenster - Funktion , die Eingabe als erwartet dauert Typ Variant\Stringund Länge 1, die eine Kapital Schreiben von Zelle [A1]und gibt an die VBE unmittelbaren Fensterfunktion

?[A1]Split("upcake onut clair royo ingerbread oneycomb ce cream sandwich ellybean itkat ollipop arshmallow ougat reo")(Asc([A1])-67)

-5 Bytes für die Räume in wechselnden ce cream sandwichvon (char 32) bis  (char 160) `` (char 127) und in den Trennzeichen Komma Entfernen SplitFunktion


4

SOGL V0.12 , 81 Bytes

]&ŗ√‰fō¶č▓'▼$»3↕█γb└a}⅟∑─b¹¦Æ:↕┘∞½Σ#gī±⅔≡≥\3Qy-7todΥ7ā‼D←εPρρ:¬c‰ƨ}f沑θ╔@ŗz,WHHw

Probieren Sie es hier aus!

Erläuterung:

...‘            push "cupcake donut eclair froyo gingerbread honeycomb ice_cream_sandwich jellybean kitkat lollipop marshmallow nougat oreo"
    θ           split on spaces
     ╔@ŗ        replace underscores with spaces
        z,W     find the inputs index in the lowercase alphabet
           HH   decrease by 2
             w  get that item from the array

Jetzt gibt es eine kürzere 80-Byte- Version, aber ich habe die integrierten + 2 / -2-Funktionen aufgrund dieser Herausforderung hinzugefügt: p

Die komprimierte Zeichenfolge ist wie "cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"für die maximale Verwendung von englischen Wörtern aufgeteilt (viele waren nicht im SOGL-Wörterbuch). Im Moment kann ich keine Verbesserungen finden.


4

> <> , 181 Bytes

!vi:od5*-0$6a*@p!
v<
 v"upcake"
 v"onut"
 v"clair"
 v"royo"
 v"ingerbread"
 v"oneycomb"
 v"ce Cream Sandwich"
 v"ellybean"
 v"itkat"
 v"ollipop"
 v"arshmallow"
 v"ougat"
 v"reo"
o<>

Probieren Sie es online!

Dies funktioniert, indem das Programm selbstmodifiziert wird, um einen <vor den richtigen zu druckenden Namen zu setzen, dessen Position durch den Wert des eingegebenen Buchstabens bestimmt wird.


3

Dyalog APL, 158 143 131 Bytes

1 Byte gespeichert dank @ Zacharý

Dank @Gil werden 12 Bytes gespart

{⍵,(⎕A⍳⍵)⊃','(1↓¨=⊂⊢)',,,upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo'}

Probieren Sie es online!

Wie?

',,,upcake...' - Liste der Wörter

','(1↓¨=⊂⊢) - geteilt durch ','

(⎕A⍳⍵)⊃ - Nehmen Sie von der Stelle des Arguments im Alphabet

⍵, - und an den Brief anhängen


Warum hast du als platt beschrieben?
Zacharý

Funktioniert auch {⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}für 1 Byte weniger!
Zacharý

@ Zacharý weil es ... "mix" ist. Schön! warum ∊ und nicht ↑?
Uriel

Da wird zwar auch abgeflacht, aber eigentlich abgeflacht und nicht "abgemischt". ↑(1 2)(3 4)ist NICHT flach, während ∊(1 2)(3 4)ist.
Zacharý

@ Zacharý OP hat das geändert ... WIEDER.
Uriel

3

EXCEL, 154 Bytes

=A1&CHOOSE(CODE(A1)-66,"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo")

Ich habe noch nie daran gedacht, Excel auf diese Weise zu verwenden. Perfekt. Jetzt mach es mit WORD
tisaconundrum 24.08.17

@tisaconundrum - wir sprechen nicht von dieser verfluchten Sache; Sogar VBA konnte es nicht retten
Taylor Scott

3

C (GCC) , 195 192 190 Bytes

-2 Bytes dank @Quentin

*V[]={"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo"};main(c,v)char**v;{printf("%c%s",c,V[(c=*v[1])-67]);}

Probieren Sie es online!


3

Tcl , 158 Bytes

proc A s {puts $s[lindex {upcake onut clair royo ingerbread oneycomb "ce Cream Sandwich" ellybean itkat ollipop arshmallow ougat reo} [expr [scan $s %c]-67]]}

Probieren Sie es online!


2
Tcl! Sie sehen hier nicht zu viele Tcl-Lösungen. Es ist Schande.
Silvio Mayolo

2

Haskell, 145 Bytes

f c=takeWhile(/=succ c)$dropWhile(/=c)"CupcakeDonutEclairFroyoGingerbreadHoneycombIce Cream SandwichJellybeanKitkatLollipopMarshmallowNougatOreo"

3
takeWhilekann fst.spanund dropWhiledementsprechend sein snd.span.
Laikoni

2

Gaia , 110 Bytes

:c“reo“upcake“onut“clair“royo“ingerbread“oneycomb“ce Cream Sandwich“ellybean“itkat“ollipop“arshmallow“ougat”=+

Probieren Sie es online!

Erläuterung

:          Push two copies of the input
 c         Get the codepoint of the top one
  “...”    Push the list of version names without their first letters
       =   Modularly index the code point into the list
        +  Append to the input

2

Ruby, 127 Bytes

->c{c+%w[upcake onut clair royo ingerbread oneycomb ce\ Cream\ Sandwich ellybean itkat ollipop arshmallow ougat reo][c.ord-67]}

Übernimmt die Eingabe in Großbuchstaben. Probieren Sie es online!


2

Pyth , 117 116 Bytes

Port meiner Python-Antwort .

+Q@c"upcake,onut,clair,royo,ingerbread,oneycomb,ce cream sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"\,a67C

Probieren Sie es hier aus! oder Schauen Sie sich die Test Suite an

Pyth , 99 Bytes (70 Zeichen)

-15 Bytes dank @insert_name_here !

+Q@c." y|çEC#nZÙ¦Y;åê½9{ü/ãѪ#¤
ØìjX\"¦Hó¤Ê#§T£®úåâ«B'3£zÞz~Уë"\,a67C

Probieren Sie es hier aus!


Sie könnten 15 Bytes einsparen, indem Sie komprimierte Zeichenfolgen verwenden (obwohl die Antwort dann nicht druckbare Zeichen enthalten müsste).
insert_name_here

@insert_name_here Danke.
Mr. Xcoder

2

Java (OpenJDK 8) , 128 Byte

c->c+"upcake#onut#clair#royo#ingerbread#oneycomb#ce Cream Sandwich#ellybean#itkat#ollipop#arshmallow#ougat#reo".split("#")[c-67]

Probieren Sie es online!


Regex verwenden, 149 Bytes

s->"CupcakeDonutEclairFroyoGingerbreadHoneycombIce cream sandwichJellybeanKitkatLollipopMarshmallowNougatOreo".replaceAll(".*?("+s+"[a-z ]+).*","$1")

Probieren Sie es online!

  • Kevin Cruijssen spart 4 Byte bei der Regex-Lösung!

1
.splitIch wollte die gleiche Antwort posten (nur mit einem anderen Trennzeichen), als ich die Aufforderung gelesen habe und konnte keine Java-Antwort finden (bis ich zur zweiten Seite mit den Antworten ging), also +1. Wie für die Regex-Antwort, ([a-z]| .)+kann sein [a-z ]+, da Sie "Ice Cream Sandwich" ausgeben dürfen (" Die Ausgabe kann in Titel (Cupcake) oder ganz in Kleinbuchstaben (Eclair) erfolgen. Ice Cream Sandwich kann groß geschrieben werden, wie Sie möchten. (Ich habe nicht erwartet, dass es so viel Verwirrung
stiftet

2

Kubisch , 1047 852 830 Bytes

Funktionen helfen sicher, große Programme Golf ...

⇒+552
⇒+551
⇒+553
⇒+55
⇒/1+52
⇒/1+53
~@7+4f5=?{:5+53@:4/1f1@:5+51@:5+2/1f4@:5+3/1f2@:2/1f2@}
+5f5=?{:3/1f1@:2/1f1@:5+53@:5+3/1f1@}
+51f5=?{:5+51@+1@:5+2/1f4@:5+1/1+551@+1@}
+52f5=?{:5+1/1f1@:3/1f1@:4/1f3@:3/1f1@}
+53f5=?{:5+1/1f2@:2/1f1@:4/1f2@:2/1f2@:5+1/1f1@:5+3/1f4@:5+1/1f1@:2/1f2@:5+2/1f4@:1/1f2@}
+53=?{:3/1f1@:2/1f1@-1@:4/1f3@:5+51@:3/1f1@:1/1f1@:5+3/1f4@}
+1f6=?{:5+51@:2/1f2@:5/1+3@:4/1+52@:5+1/1f1@:2/1f2@:5+2/1+55@:1/1f1@:5/1+3@:2/1+54@:5+2/1f4@6:2/1f1@6:1/1f2@6:2/1f3@6:5+1/1f2@6:5+51@6:5/1f2@6}
+2f6=?{:2/1f2@:5+52@@:4/1f3@:5+3/1f4@:2/1f2@:5+2/1f4@:2/1f1@}
+3f6=?{:5+1/1f2@:5+3/1f1@-1@:5+2/1f4@:5+3/1f1@}
+4f6=?{:3/1f1@:5+52@@:5+1/1f2@:4/1f1@:3/1f1@:4/1f1@}
+5f6=?{:5+2/1f4@:5+1/1f1@:5+2/1f1@:5/1f2@:1/1f1@:5+2/1f4@:5+52@@:3/1f1@:2/1f3}
+51f6=?{:3/1f1@:5+53@:4/1f2@:5+2/1f4@:5+3/1f1@}
+52f6=?{:5+1/1f1@:2/1f2@:3/1f1@}

Probieren Sie es online! Dies sind 830 Bytes in Cubicals SBCS .

  • ~Liest Eingaben, @druckt sie. (Dies bricht ab, wenn die Eingabe ungültig ist.)
  • Jeder der +.../...+...=7?6{...}vergleicht den Eingang zu jedem ASCII - Wert ( C, D, E, F, usw.) und führt den Code innerhalb {...}wenn sie gleich sind.
  • Jeder Codeblock ( {...}) gibt den Rest des Namens aus (das erste Zeichen ist bereits gedruckt).

Dank des ASCII-zu-Kubik-Übersetzers von TehPers, der sehr hilfreich war.


1
Das sind 1060 Bytes
Conor O'Brien


1

Pyke , 117 Bytes

Port meiner Python-Antwort .

"upcake,onut,clair,royo,ingerbread,oneycomb,ce cream sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"\,cQ.o67-@+

Probieren Sie es hier aus!

Als Hex-Codes kodiert, die neue Golftechnik in Pyke, wären es 116 Bytes :

22 75 70 63 61 6B 65 2C 6F 6E 75 74 2C 63 6C 61 69 72 2C 72 6F 79 6F 2C 69 6E 67 65 72 62 72 65 61 64 2C 6F 6E 65 79 63 6F 6D 62 2C 63 65 20 63 72 65 61 6D 20 73 61 6E 64 77 69 63 68 2C 65 6C 6C 79 62 65 61 6E 2C 69 74 6B 61 74 2C 6F 6C 6C 69 70 6F 70 2C 61 72 73 68 6D 61 6C 6C 6F 77 2C 6F 75 67 61 74 2C 72 65 6F 22 5C 2C 63 51 EF 36 37 2D 40 2B

(Einfügen und überprüfen Use hex encoding?).


1
Pyke braucht eine "Android-Version", oder?
Erik der Outgolfer

1
@EriktheOutgolfer Es hat Pokemons, also warum nicht?
Mr. Xcoder

1

C # , 147 136 129 Bytes


Daten

  • Eingabe Char c Der erste Buchstabe des Versionsnamens
  • Ausgabe String Der vollständige Name der Version

Golf gespielt

// Requires the input to be uppercase.
// This is the one counting for the challange
c=>c+"upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo".Split(',')[c-67];

// Optional. Requires the input to be lowercase.
c=>c+"upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo".Split(',')[c-99];

// Optional. Works with both uppercase and lowercase with the additional cost of 10 bytes.
c=>c+"upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo".Split(',')[c-(c<99?67:99)];

Ungolfed

c =>
    c + "upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"
        .Split( ',' )[ c - 67 ];

Ungolfed lesbar

// Takes a char 
c =>
    // Appends the input letter to...
    c + 

    // ... the name in the resulting index of the subtraction of the char with 67 ('C'), or with 99 ('c') for the lowercase version
    "upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"
        .Split( ',' )[ c - 67 ];

// Takes a char 
c => 
    // Appends the input letter to...
    c + 

    // ... the name in the resulting index of the subtraction of the char with 67 ('C') if the char is uppercase ( 'C' == 67, 'O' == 79 )
    //    or with 99 ('c') if the char is lowercase ( 'c' == 99, 'o' == 111 )
    "upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"
        .Split( ',' )[ c - ( c < 99 ? 67 : 99 ) ];

Vollständiger Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestBench {
    public static class Program {
        private static Func<Char, String> f = c =>
            c + "upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"
                .Split( ',' )[ c - 67 ];

        static void Main( string[] args ) {
            List<Char>
                testCases = new List<Char>() {
                    'C',
                    'D',
                    'E',
                    'F',
                    'G',
                    'H',
                    'I',
                    'J',
                    'K',
                    'L',
                    'M',
                    'N',
                    'O',
                };

            foreach(Char testCase in testCases) {
                Console.WriteLine($" Input: {testCase}\nOutput: {f(testCase)}\n");
            }

            Console.ReadLine();
        }
    }
}

Releases

  • v1.0 - 147 bytes- Anfangslösung.
  • v1.1 - -11 bytes- Entliehene Idee von Olivier Grégoire .
  • v1.2 - - 7 bytes- Die Funktionseingabe wurde von explizit in implizit geändert.

Anmerkungen

  • Keiner

Könnten Sie etwas sparen, indem Sie den ersten Buchstaben von jedem Namen entfernen und die Zeichenfolge, die Sie aus dem Array abrufen, an das Eingabezeichen anhängen?
Shaggy

(char c)kann nur seinc
LiefdeWen

1

R, 169.155 Bytes

sub(paste0(".*(",scan(,""),"[^A-Z]+).*"),"\\1","CupcakeDonutEclairFroyoGingerbreadHoneycombIce cream sandwichJellybeanKitkatLollipopMarshmallowNougatOreo")

1

Dyalog APL, 125 Bytes

{⍵/⍨⍞=⎕A[+\⍵∊⎕A]}'ABCupcakeDonutEclairFroyoGingerbreadHonecombIce cream sandwichJellybeanKitkatLollipopMarshmallowNougatOreo'

Probieren Sie es online!

Wie?

  • ⍵∊⎕A (die lange Zeichenkette) mit 1 für Großbuchstaben, 0 für Kleinbuchstaben / Leerzeichen.
  • +\ Gruppe (Rückgabe von Zahlen) ⍵ in Großbuchstaben.
  • ⎕A[...] Der Großbuchstabe wird durch eine Zahl gekennzeichnet
  • ⍵/⍨⍞= Die Gruppe, die durch diese Nummer gekennzeichnet ist
  • {...}'...'Auf die lange Zeichenfolge setzen

Cleverer Ansatz.
Adám

1

R, 131 , 126 , 123 , 112 , 178 Bytes

grep(paste0('^',scan(,'')),c("Cupcake","Donut","Eclair","Froyo","Gingerbread","Honeycomb","Ice Cream Sandwich","Jellybean","Kitkat","Lollipop","Marshmallow","Nougat","Oreo"),v=T)

Vielen Dank für @Mark für das Speichern von 5 + 8 + 3 Bytes




1

PowerShell , 136 134 Byte

param($c)$c+('upcake0onut0clair0royo0ingerbread0oneycomb0ce cream sandwich0ellybean0itkat0ollipop0arshmallow0ougat0reo'-split0)[$c-99]

Probieren Sie es online!

Nimmt ein [char]Eingabezeichen in Kleinbuchstaben und gibt es in Kleinbuchstaben aus.

-2 dank des Vorschlags von AdmBorkBork an -split0statt -split','.


Sie könnten 0als Trennzeichen verwenden und dann -split0die Anführungszeichen speichern.
AdmBorkBork

@AdmBorkBork guter Vorschlag, danke!
TessellatingHeckler
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.