Oreo? Non… Sucette peut-être?


46

Depuis 2009, les noms de code de version d'Android sont sur le thème de la confiserie. Android 1.5 est Cupcake, Android 1.6 est Donut, Android 2.0 est Eclair, etc. En fait, les noms de version sont alphabétiques!

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

En ordre:

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

Défi

Écrire un programme / fonction qui prend une lettre Cà Oet envoie son nom de code de la version Android respective.

Caractéristiques

  • Les règles d'E / S standard s'appliquent .
  • Les échappatoires standard sont interdites .
  • Vous pouvez choisir de prendre en charge la saisie en minuscule ou en majuscule, voire les deux.
  • La sortie peut être en casse du titre ( Cupcake) ou complètement en minuscule ( eclair). Ice cream sandwichpeut être capitalisé comme vous le souhaitez. (Je ne m'attendais pas à ce que cela cause autant de confusion ...)
  • Ce défi ne consiste pas à trouver l'approche la plus courte dans toutes les langues, mais plutôt à trouver l' approche la plus courte dans chaque langue .
  • Votre code sera noté en octets , généralement dans le codage UTF-8, sauf indication contraire.
  • Les fonctions intégrées (Mathematica peut en avoir un: P) qui calculent cette séquence sont autorisées, mais il est conseillé d'inclure une solution ne reposant pas sur une fonction intégrée.
  • Les explications, même pour les langues "pratiques", sont encouragées .

Cas de test

Ce sont des majuscules et des titres.

Input   Output

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

Dans quelques meilleurs formats:

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 Voulez-vous dire que ce n'est pas une dupe parce que c'est plus facile? C'est une dupe justement parce que c'est une version plus facile d'une question existante. Nous avons déjà fait ce genre de question à mort et celle-ci ne fournit absolument rien de nouveau ou d'intéressant pour le genre.
Wheat Wizard,

2
@ WheatWizard Je pense que le premier est une meilleure dupe, puisque le dernier est une source restreinte.
M. Xcoder

9
Ce pourrait être une dupe d'un autre défi. Mais aidez-moi à reconnaître que mon monstre demande une conversion de chaîne en symbole (ce qui conduit à des solutions basées sur le hachage). Celui-ci demande le symbole à la chaîne.
Arnauld


5
@MagicOctopusUrn Oui, j'ai vu ça aussi. Malheureusement, cela n'inclut pas MARSHMALLOWet plus tard.
mbomb007

Réponses:


14

Charbon de bois , 73 octets

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

Essayez-le en ligne! I / O est en minuscule. Basé sur cette version verbeuse . Explication:

                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
Je ... quoi? Comment.
Urne magique Octopus

@MagicOctopusUrn Désolé, j'étais trop occupé pour ajouter une explication à ce moment-là. J'espère que celui-ci suffit.
Neil

1
Oh wow, je ne savais pas qu'il s'agissait de cordes compressées!
Urne magique Octopus

Comment charbon de bois bat SOGL ici est tout simplement incroyable.
Erik the Outgolfer

Jelly le bat toujours: joie: codegolf.stackexchange.com/a/140092/73675
Hugo H

14

Bash + Core Utils 131 128 122 117 octets.

Le script est codé en Base64 car il contient des caractères spéciaux (étranges).

Accepte la lettre du nom de code Android uniquement en minuscule en tant que premier paramètre de position. Renvoie le nom de code complet également en minuscule .

CiPBUeICicG5tJ8W5a0Pc/hYuw7hkNMSIYkAPjARkdgFrdbh3NJgTmB4gRPiiQDJAaOyBH4ki14C
QDeKRNQJ8IJYER411DAnx0SO4CAKYmFzZTMyICQwfHRyICdBLVo0NwonICdhLXoKICd8Z3JlcCBe
JDEK

Explication:

#�Q��������s�X����!�>0�������`N`x������~$�^@7�D�    ��X5�0'�D�� 
base32 $0|tr 'A-Z47
' 'a-z
 '|grep ^$1
  • Les deux premières lignes sont le blob binaire avec les données (voir la fin de la réponse pour plus d'informations). La première ligne est vide, pour éviter les problèmes avec Bash, sinon elle pourrait penser qu’elle est alimentée avec un fichier binaire.
  • base32 $0 code le contenu du script avec Base32, avec le retour à la ligne par défaut de 76 caractères.
  • tr 'A-Z47\n' 'a-z\n '(notez que le \nest écrit comme une nouvelle ligne littérale) mettra l’entrée en minuscule et remplacera respectivement 4 , 7 et \npar \n, espace et espace .
  • grep ^$1 affichera les lignes correspondant à la chaîne fournie comme premier argument du script.

Données binaires

Ce flux d'octets a été forgé afin qu'il ne contienne pas de saut de ligne et lorsqu'il est décodé avec Base32 conformément à la norme RFC 4648, la chaîne résultante est la liste des noms de code Android (en utilisant 4 comme délimiteur d'élément et 7 pour remplacer le caractère d' espacement ). Parmi ses particularités, il commence par un caractère de nouvelle ligne et un hash ( #); il se comporte donc comme un commentaire et n'est donc pas exécuté par l'interpréteur.

De plus, la ligne par défaut contenant 76 caractères de cette implémentation Base32 m'a aidé à octroyer un octet, car j'ai réorganisé les éléments pour qu'ils utilisent le saut de ligne comme l'un des espaces sandwich à la crème glacée .


En outre, et d' aller un peu hors-sujet, je pense que Google ne devrait pas en publicité directe des produits commerciaux dans les noms de code Android.


2
Nice, c'est une réponse vraiment cool! Bienvenue sur le site :)
DJMcMayhem


1
Cette version est boguée, du moins sur mon système (bash 4.4.12, coreutils 8.27). Car f, il sort deux lignes: une avec froyoet une autre avec mystérieuse fgeyltmuzteibno.
MarSoft

1
@MarSoft: Merci! Fixé. La pitié est que maintenant j'ai besoin d'un octet de plus.
Hélio

@MarSoft: résolu! Maintenant avec les mêmes octets!
Hélio


11

Bash + Core Utils (Grep): 132 à 130 octets

Simple comme pourrait être

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

1
La saisie via ddest intelligente, mais pourriez-vous sauvegarder en tant que script et l'utiliser à la $1place?
Dom Hastings

11

Gelée , 57 octets

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

Essayez-le en ligne!

-5 merci à Jonathan Allan .


Économisez quatre octets en utilisant un espace réservé pour les espaces dans le "sandwich à la crème glacée" et en utilisant des espaces pour le fractionnement, par exemple:Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Jonathan Allan

... fait en fait que cinq octets (j'avais utilisé "repaire" quand "clair" est dans le dictionnaire):Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
Jonathan Allan

@ JonathanAllan merci ... attendez, pourquoi aurais-je besoin de F? oh c'est parce que je reçois des entrées sous forme de chaîne et non de caractère
Erik the Outgolfer

8

C ++, 206 201 198 octets

Merci à @sergiol pour avoir aidé à économiser 3 octets!

#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]);}

Essayez-le en ligne!

C, 173 octets

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

Eh bien, cela a commencé en C ++, mais maintenant, il est également valide en C, et certains octets peuvent être sauvegardés en le compilant en C.

Essayez-le en ligne!


1
Ma tentative manquée pour la raccourcir en enlevant la première lettre de chaque entrée: tio.run/…
sergiol

@sergiol Merci! J'ai pu économiser trois octets avec cela après un peu de golf.
Steadybox

4
#importen c ++? Qu'est-ce que j'oublie ici?
Abhinav Gauniyal

@AbhinavGauniyal: IIRC Je pense que certains avertissements de compilation m'ont également conseillé d'ajouter #import <cstdio>parce que le manque de #include <stdio.h>; ou peut-être que je me trompe
sergiol

@AbhinavGauniyal Ce n'est pas le C ++ standard, mais au moins GCC et MSVC l'ont.
Steadybox

7

JavaScript (ES6), 137 136 octets

Enregistré 1 octet grâce à Neil

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

Démo


ne pouvez-vous pas inclure l'espace dans la plage de caractères, probablement avec \ s? pas beaucoup utilisé JS Regex
michi7x7 Le

1
@ michi7x7 Hes a besoin que le match s'arrête en majuscule, sauf dans le cas de Ice Cream Sandwich, bien que ([a-z]| .)+(sauvegarde d'un octet) fonctionnerait même avec Ice Cream Sandwich au milieu de la chaîne (cela commencerait à échouer lorsque les noms de code ont atteint S bien que).
Neil

@ Neil bien, [a-z\s]+ne correspond pas aux lettres majuscules. Je ne sais pas si vous pouvez faire cela dans JS
michi7x7 Le

@ michi7x7 Comment cela fonctionnerait-il avec Ice Cream Sandwich?
Neil

2
Utilisez Ice cream sandwich, comme dans le cas test (bien que ce ne soit pas le titre)
michi7x7

5

Japt , 81 à 79 octets

Contient quelques caractères qui ne s'afficheront pas ici.

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

Essaye-le

  • 2 octets économisés grâce à Oliver .

Explication

Entrée implicite de la chaîne de caractères majuscules U.

Une chaîne compressée (tout ce qui se trouve entre les guillemets) des noms, séparés par un fet sans leur première lettre, est divisée ( q) en un tableau f.

Dans ce tableau, nous obtenons l'élément à l'index ( g) du Ucode de caractère s. (Oui, emballage d'index!)

Nous ajoutons cela à Uet générons implicitement la chaîne résultante.


1
Agréable. Vous pouvez économiser quelques octets si vous séparez lesf nouvelles lignes à la place: ethproductions.github.io/japt/…
Oliver

@ Oliver: Oh, gentil, merci :) Sur mon téléphone, marcher dans la rue ne l'aurait certainement pas eu pendant un moment (voire pas du tout).
Shaggy

5

Excel VBA, 137 134 132 octets

Anonyme VBE fonction de fenêtre qui prend immédiatement entrée en tant que type prévu Variant\Stringet la longueur 1tenue d' une capitale lettre de la cellule [A1]et des sorties à la fonction de fenêtre immédiate VBE

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

-5 octets pour changer les espaces ce cream sandwichde (caractère 32) à  (caractère 160) `` (caractère 127) et supprimer le séparateur de virgule dans la Splitfonction


4

SOGL V0.12 , 81 octets

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

Essayez-le ici!

Explication:

...‘            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

Il existe maintenant une version plus courte de 80 octets , mais j’ai ajouté les + 2 / -2 intégrés à cause de ce défi: p

La chaîne compressée est divisée comme "cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"pour une utilisation maximale des mots anglais (beaucoup n'étaient pas dans le dictionnaire SOGL), pour le moment je ne trouve aucune amélioration.


4

> <> , 181 octets

!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<>

Essayez-le en ligne!

Cela fonctionne en auto-modifiant le programme pour placer un <devant le nom correct à imprimer, dont la position est déterminée par la valeur de la lettre entrée.


3

Dyalog APL, 158 143 131 octets

1 octet enregistré grâce à @ Zacharý

12 octets sauvegardés grâce à @Gil

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

Essayez-le en ligne!

Comment?

',,,upcake...' - liste de mots

','(1↓¨=⊂⊢) - divisé par ','

(⎕A⍳⍵)⊃ - prendre de la place de l'argument dans l'alphabet

⍵, - et annexer à la lettre


Pourquoi avez-vous décrit comme aplatie?
Zacharý

En outre, {⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}fonctionne pour 1 moins d'octet!
Zacharý

@ Zacharý parce que c'est ... "mix". joli! pourquoi et pas ↑?
Uriel

Parce que aplatit aussi, mais en fait aplatir et non "mélanger". ↑(1 2)(3 4)n'est pas plat, alors que ∊(1 2)(3 4)c'est.
Zacharý

@ Zacharý OP a changé cela ... ENCORE.
Uriel

3

EXCEL, 154 octets

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

Je n'ai jamais pensé à utiliser Excel de cette manière. Parfait. Maintenant, faites-le avec WORD
tisaconundrum

@tisaconundrum - nous ne parlons pas de cette chose maudite; Même VBA n'a pas pu le sauver
Taylor Scott

3

C (gcc) , 195 192 190 octets

-2 octets grâce à @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]);}

Essayez-le en ligne!


3

Tcl , 158 octets

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]]}

Essayez-le en ligne!


2
Tcl! Vous ne voyez pas trop de solutions Tcl ici. C'est dommage.
Silvio Mayolo

2

Haskell, 145 octets

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

3
takeWhilepeut être fst.spanet en dropWhileconséquence snd.span.
Laikoni

2

Gaia , 110 octets

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

Essayez-le en ligne!

Explication

:          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 octets

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

Prend une entrée en majuscule. Essayez-le en ligne!


2

Pyth , 117 116 octets

Réponse de Port of my Python .

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

Essayez-le ici! ou consultez la suite de tests

Pyth , 99 octets (70 caractères)

-15 octets grâce à @insert_name_here !

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

Essayez-le ici!


Vous pouvez économiser 15 octets en utilisant des chaînes compressées (bien que la réponse doive alors contenir des caractères non imprimables).
insert_name_here

@insert_name_here Merci.
M. Xcoder

2

Java (OpenJDK 8) , 128 octets

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

Essayez-le en ligne!


Utilisation de regex, 149 octets

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

Essayez-le en ligne!

  • 4 octets économisés sur la solution regex grâce à Kevin Cruijssen!

1
Était sur le point de publier la même .splitréponse (uniquement avec un délimiteur différent) lorsque j'ai lu le défi et que je n'ai pas pu trouver de réponse en Java (jusqu'à ce que je passe à la deuxième page de réponses), donc +1. En ce qui concerne la réponse regex, cela ([a-z]| .)+peut être [a-z ]+, puisque vous êtes autorisé à sortir "Sandwich à la crème glacée" (" La sortie peut être en cas de titre (Cupcake) ou complètement en minuscule (éclair). Le sandwich à la crème glacée peut être capitalisé comme vous le souhaitez. (Je ne m'attendais pas à autant de confusion.) ")
Kevin Cruijssen

2

Cubiquement , 1047 852 830 octets

Des fonctions qui aident le golf aux gros programmes ...

⇒+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@}

Essayez-le en ligne! Il s'agit de 830 octets dans SBCS de Cubically .

  • ~lit l'entrée, l' @imprime. (Cela casse lorsque l'entrée est invalide.)
  • Chacun des +.../...+...=7?6{...}compare l'entrée de chaque valeur ASCII ( C, D, E, F, etc.) et exécute le code à l'intérieur {...}si elles sont égales.
  • Chaque bloc de code ( {...}) imprime le reste du nom (le premier caractère est déjà imprimé).

Merci au traducteur ASCII en Cubiquement de TehPers qui a été très utile.


1
C'est 1060 octets
Conor O'Brien


1

Pyke , 117 octets

Réponse de Port of my Python .

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

Essayez-le ici!

Encodé en tant que code hexadécimal, la nouvelle technique de golf à Pyke, ce serait 116 octets :

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

(Coller et vérifier Use hex encoding?).


1
Pyke a besoin d'un "Android release" intégré, non?
Erik the Outgolfer

1
@EriktheOutgolfer Il a des Pokemons, alors pourquoi pas?
M. Xcoder

1

C # , 147 136 129 octets


Les données

  • Entrée Char c La première lettre du nom de la version
  • Sortie String Le nom complet de la version

Golfé

// 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 lisible

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

Code complet

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

Communiqués

  • v1.0 - 147 bytes- Solution initiale.
  • v1.1 - -11 bytes- Emprunté l' idée d' Olivier Grégoire .
  • v1.2 - - 7 bytes- Modification de l'entrée de la fonction de explicit à implicite.

Remarques

  • Aucun

Pourriez-vous sauvegarder quelque chose en supprimant la première lettre de chaque nom et en ajoutant la chaîne que vous extrayez du tableau au caractère saisi?
Shaggy

(char c)can just bec
LiefdeWen

1

R, 169 155 octets

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

1

Dyalog APL, 125 octets

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

Essayez-le en ligne!

Comment?

  • ⍵∊⎕A (la longue chaîne) avec 1 pour les majuscules, 0 pour les minuscules / espaces.
  • +\ Groupe (renvoyer des nombres) ⍵ en majuscules.
  • ⎕A[...] La lettre majuscule signifiée par un chiffre
  • ⍵/⍨⍞= Le groupe désigné par ce nombre
  • {...}'...'Mis à la longue chaîne

Approche intelligente.
Adám

1

R, 131 , 126 , 123 , 112 , 178 octets

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

Merci pour @Mark pour économiser 5 + 8 + 3 octets



1

C (gcc) , 168 octets

main(){puts(memchr("Cupcake\0Donut\0Eclair\0Froyo\0Gingerbread\0Honeycomb\0Ice cream sandwich\0Jellybean\0Kitkat\0Lollipop\0Marshmallow\0Nougat\0Oreo",getchar(),117));}

Essayez-le en ligne!


1

PowerShell , 136 134 octets

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

Essayez-le en ligne!

Prend un [char]caractère d'entrée, en minuscule, et les sorties en minuscule.

-2 grâce à la suggestion de AdmBorkBork au -split0lieu de -split','.


Vous pouvez utiliser 0comme séparateur puis -split0enregistrer les guillemets.
AdmBorkBork

@AdmBorkBork bonne suggestion, merci!
TessellatingHeckler
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.