Oreo? Tidak ... Lollipop, mungkin?

46

Sejak 2009, nama kode versi Android telah bertema permen. Android 1.5 adalah Cupcake, Android 1.6 adalah Donut, Android 2.0 adalah Eclair, dll. Bahkan, nama-nama versinya abjad!

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

Dalam urutan:

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

Tantangan

Tulis program / fungsi yang mengambil surat dari Cke Odan mengeluarkan nama kode versi Android masing-masing.

Spesifikasi

  • Aturan I / O standar berlaku .
  • Celah standar yang dilarang .
  • Anda dapat memilih untuk mendukung input huruf kecil atau input huruf besar atau bahkan keduanya.
  • Outputnya mungkin dalam judul kasus ( Cupcake) atau huruf kecil sepenuhnya ( eclair). Ice cream sandwichdapat dikapitalisasi sesuka Anda. (Saya tidak berharap itu menyebabkan begitu banyak kebingungan ...)
  • Tantangan ini bukan tentang menemukan pendekatan terpendek dalam semua bahasa, melainkan tentang menemukan pendekatan terpendek dalam setiap bahasa .
  • Kode Anda akan dinilai dalam byte , biasanya dalam pengkodean UTF-8, kecuali ditentukan lain.
  • Fungsi bawaan (Mathematica mungkin memiliki satu: P) yang menghitung urutan ini diizinkan tetapi termasuk solusi yang tidak bergantung pada bawaan dianjurkan.
  • Penjelasan, bahkan untuk bahasa "praktis", dianjurkan .

Uji kasus

Ini adalah huruf besar dan huruf besar.

Input   Output

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

Dalam beberapa format yang lebih baik:

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

F I J N G L
f i j n g l
benar-benar manusiawi
sumber
8
@ Mr.Xcoder Apakah Anda mengatakan ini bukan penipuan karena lebih mudah? Ini adalah penipuan tepat karena ini adalah versi yang lebih mudah dari pertanyaan yang ada. Kami sudah melakukan pertanyaan jenis ini sampai mati dan yang ini sama sekali tidak memberikan hal baru atau menarik bagi genre ini.
Wheat Wizard
2
@WheatWizard Saya pikir yang pertama adalah penipuan yang lebih baik, karena yang terakhir adalah sumber terbatas.
Tn. Xcoder
9
Ini mungkin merupakan penipuan dari beberapa tantangan lain. Tapi Bantu saya mengenali monster saya meminta konversi string ke simbol (yang mengarah ke solusi berbasis hash). Yang ini meminta simbol ke string.
Arnauld
6
batuk
Guci Gurita Ajaib
5
@ MagicOctopusUrn Ya, saya juga melihatnya. Sayangnya, itu tidak termasuk MARSHMALLOWdan nanti.
mbomb007

Jawaban:

14

Arang , 73 byte

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

Cobalah online! I / O dalam huruf kecil. Berdasarkan versi verbose ini . Penjelasan:

                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
Neil
sumber
4
Aku apa? Bagaimana.
Magic Gurita Guci
@MagicOctopusUrn Maaf saya terlalu sibuk untuk menambahkan penjelasan saat itu. Semoga yang satu ini cukup.
Neil
1
Oh wow, saya tidak tahu itu string terkompresi!
Magic Octopus Mm
Bagaimana Charcoal beats SOGL di sini tidak bisa dipercaya.
Erik the Outgolfer
Jelly masih mengalahkannya: joy: codegolf.stackexchange.com/a/140092/73675
Hugo H
14

Bash + Core Utils 131 128 122 117 byte.

Script dikodekan sebagai Base64 karena mengandung karakter khusus (aneh).

Menerima huruf kode nama Android hanya dalam huruf kecil sebagai parameter posisi pertama. Mengembalikan nama kode lengkap juga dalam huruf kecil .

CiPBUeICicG5tJ8W5a0Pc/hYuw7hkNMSIYkAPjARkdgFrdbh3NJgTmB4gRPiiQDJAaOyBH4ki14C
QDeKRNQJ8IJYER411DAnx0SO4CAKYmFzZTMyICQwfHRyICdBLVo0NwonICdhLXoKICd8Z3JlcCBe
JDEK

Penjelasan:

#�Q��������s�X����!�>0�������`N`x������~$�^@7�D�    ��X5�0'�D�� 
base32 $0|tr 'A-Z47
' 'a-z
 '|grep ^$1
  • Dua baris pertama adalah gumpalan biner dengan data (lihat akhir jawaban untuk informasi lebih lanjut). Baris pertama kosong, untuk menghindari masalah dengan Bash, karena kalau tidak, mungkin berpikir bahwa sedang diberi file biner.
  • base32 $0 mengkodekan konten skrip dengan Base32, dengan garis pembungkus default 76 karakter.
  • tr 'A-Z47\n' 'a-z\n '(catatan bahwa \nditulis sebagai baris baru literal) akan huruf kecil masukan dan mengganti 4 , 7 dan \noleh \n, ruang dan ruang masing-masing.
  • grep ^$1 akan menampilkan baris yang cocok dengan string yang disediakan sebagai argumen pertama ke skrip.

Data biner

Streaming oktet ini dipalsukan sehingga tidak mengandung baris baru dan ketika diterjemahkan dengan Base32 sesuai RFC 4648, string yang dihasilkan adalah daftar nama kode Android (menggunakan 4 sebagai pembatas item dan 7 untuk mengganti karakter spasi ). Di antara kekhasannya, ini dimulai dengan karakter baris baru dan hash ( #) sehingga berperilaku sebagai komentar dan, oleh karena itu, tidak dieksekusi oleh penerjemah.

Juga, garis default yang membungkus 76 karakter dari implementasi Base32 ini membantu saya satu byte, ketika saya memesan kembali item-item untuk menggunakan jeda baris sebagai salah satu ruang sandwich Ice cream .


Juga, dan akan sedikit off-topic, saya berpikir bahwa Google tidak harus di langsung mengiklankan produk komersial di codenames Android.

Helio
sumber
2
Bagus, ini jawaban yang sangat keren! Selamat datang di situs :)
DJMcMayhem
1
Versi ini bermasalah, setidaknya di sistem saya (bash 4.4.12, coreutils 8.27). Sebab f, itu menghasilkan dua baris: satu dengan froyodan yang lain dengan misterius fgeyltmuzteibno.
MarSoft
1
@ Marsoft: Terima kasih! Tetap. Sayang sekali bahwa sekarang aku butuh satu byte lagi.
Helio
@ Marsoft: Dipecahkan! Sekarang dengan byte yang sama!
Helio
11

Python 3 , 139 byte

lambda x:x+'upcake,onut,clair,royo,ingerbread,oneycomb,ce cream sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo'.split(",")[ord(x)-67]

Cobalah online!

Tuan Xcoder
sumber
11

Bash + Core Utils (Grep): 132 130 Bytes

Sesederhana mungkin

grep ^$1<<<'Cupcake
Donut
Eclair
Froyo
Gingerbread
Honeycomb
Ice Cream Sandwich
Jellybean
Kitkat
Lollipop
Marshmallow
Nougat
Oreo'
perangkat lunak markas
sumber
1
Input via ddpintar, tetapi bisakah Anda menyimpannya sebagai skrip dan menggunakannya $1?
Dom Hastings
11

Jelly , 57 byte

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

Cobalah online!

Terima kasih kepada Jonathan Allan .

Erik the Outgolfer
sumber
Simpan empat byte dengan menggunakan placeholder untuk spasi di "es krim sandwich" dan menggunakan spasi untuk membelah, misalnya:Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Jonathan Allan
... benar-benar membuat lima byte (saya telah menggunakan "sarang" ketika "clair" ada dalam kamus):Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
Jonathan Allan
@ Jonathan Allan, terima kasih ... tunggu, mengapa saya membutuhkannya F? oh itu karena saya mendapat input sebagai string bukan char
Erik the Outgolfer
8

C ++, 206 201 198 byte

Terima kasih kepada @sergiol untuk membantu menghemat 3 byte!

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

Cobalah online!

C, 173 byte

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

Yah, itu dimulai sebagai C ++, tapi sekarang itu juga C yang valid, dan beberapa byte dapat disimpan dengan mengkompilasinya sebagai C.

Cobalah online!

Steadybox
sumber
1
Upaya saya yang gagal untuk membuatnya lebih pendek dengan menghapus huruf pertama dari setiap entri: tio.run/…
sergiol
@sergiol Terima kasih! Saya bisa menghemat tiga byte dengan itu setelah sedikit bermain golf.
Steadybox
4
#importdalam c ++? Apa yang kulewatkan di sini?
Abhinav Gauniyal
@AbhinavGauniyal: IIRC Saya pikir beberapa peringatan kompilasi menyarankan saya juga untuk menambahkan #import <cstdio>karena kurangnya #include <stdio.h>; atau mungkin saya salah
sergiol
@AbhinavGauniyal Ini bukan standar C ++, tapi setidaknya GCC dan MSVC memilikinya.
Steadybox
7

JavaScript (ES6), 137 136 byte

Disimpan 1 byte berkat Neil

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

Demo

Arnauld
sumber
Anda tidak dapat memasukkan ruang dalam rentang karakter, mungkin dengan \ s? belum menggunakan banyak JS Regex
michi7x7
1
@ michi7x7 Dia perlu kecocokan untuk berhenti pada huruf besar kecuali dalam kasus Ice Cream Sandwich, meskipun ([a-z]| .)+(menghemat 1 byte) akan bekerja bahkan dengan Ice Cream Sandwich di tengah-tengah string (itu akan mulai gagal ketika nama kode mencapai S meskipun).
Neil
@Neil well, [a-z\s]+tidak cocok dengan huruf besar. Saya hanya tidak tahu apakah Anda bisa melakukannya di JS
michi7x7
@ michi7x7 Jadi bagaimana cara kerjanya dengan Ice Cream Sandwich?
Neil
2
Gunakan Ice cream sandwich, seperti pada test case (walaupun ini bukan Title Case)
michi7x7
5

Japt , 81 79 byte

Berisi beberapa karakter yang tidak akan ditampilkan di sini.

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

Menguji

  • 2 byte disimpan berkat Oliver .

Penjelasan

Input implisit dari string karakter huruf besar U.

Sebuah string terkompresi (semuanya antara backticks) dari nama-nama, dipisahkan dengan sebuah f dan tanpa huruf pertama mereka dipisah ( q) menjadi sebuah array on f.

Dalam array itu kita mendapatkan elemen di indeks (g ) dari Ukode karakter. (Yay, pembungkus indeks!)

Kami menambahkannya ke Udan secara implisit mengeluarkan string yang dihasilkan.

Shaggy
sumber
1
Bagus. Anda dapat menyimpan beberapa byte jika Anda membagi pada fsebaliknya jika baris baru: ethproductions.github.io/japt/…
Oliver
@Liver: Oh, bagus, terima kasih :) Di ponsel saya, berjalan di jalan jadi pasti tidak akan mendapatkan itu untuk sementara waktu (jika ada).
Shaggy
5

Excel VBA, 137 134 132 Bytes

Fungsi jendela langsung VBE anonim yang mengambil input seperti tipe Variant\Stringdan panjang yang diharapkan 1dengan huruf kapital dari sel [A1]dan output ke fungsi jendela langsung VBE

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

-5 Bytes untuk mengubah spasi ce cream sandwichdari (char 32) menjadi  (char 160) `` (char 127) dan menghapus pembatas koma pada Splitfungsi

Taylor Scott
sumber
4

SOGL V0.12 , 81 byte

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

Coba Di Sini!

Penjelasan:

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

Sekarang ada versi 80 byte yang lebih pendek , tetapi saya menambahkan + 2 / -2 built-in karena tantangan ini: p

String terkompresi terpecah seperti "cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"untuk penggunaan maksimum kata-kata bahasa Inggris (banyak yang tidak ada dalam kamus SOGL), saat ini saya tidak dapat menemukan perbaikan.

dzaima
sumber
4

> <> , 181 byte

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

Cobalah online!

Ini berfungsi dengan memodifikasi sendiri program untuk menempatkan <di depan nama yang benar untuk dicetak, posisi yang ditentukan oleh nilai huruf yang dimasukkan.

Kucing Bisnis
sumber
3

Dyalog APL, 158 143 131 byte

1 byte disimpan berkat @ Zacharý

12 byte disimpan berkat @Gil

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

Cobalah online!

Bagaimana?

',,,upcake...' - daftar kata-kata

','(1↓¨=⊂⊢) - dipisah oleh ','

(⎕A⍳⍵)⊃ - ambil dari tempat argumen dalam alfabet

⍵, - dan menambahkan surat itu

Uriel
sumber
Mengapa Anda menggambarkannya sebagai rata?
Zacharý
Juga, {⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}bekerja untuk 1 byte kurang!
Zacharý
@ Zacharý karena itu ... "campur". bagus mengapa ∊ dan tidak ↑?
Uriel
Karena rata juga, tetapi sebenarnya rata dan tidak "campur". ↑(1 2)(3 4)TIDAK datar, sedang ∊(1 2)(3 4).
Zacharý
@ Zacharý OP mengubah itu ... LAGI.
Uriel
3

EXCEL, 154 byte

=A1&CHOOSE(CODE(A1)-66,"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo")
Wernisch
sumber
Saya tidak pernah berpikir untuk menggunakan excel dengan cara ini. Sempurna. Sekarang lakukan dengan KATA
tisaconundrum
@tisaconundrum - kita tidak membicarakan hal terkutuk itu; Bahkan VBA tidak bisa menyimpannya
Taylor Scott
3

C (gcc) , 195 192 190 byte

-2 byte terima kasih kepada @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]);}

Cobalah online!

Cleblanc
sumber
3

Tcl , 158 byte

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

Cobalah online!

sergiol
sumber
2
Tcl! Anda tidak melihat terlalu banyak solusi Tcl di sini. Memalukan.
Silvio Mayolo
2

Haskell, 145 byte

f c=takeWhile(/=succ c)$dropWhile(/=c)"CupcakeDonutEclairFroyoGingerbreadHoneycombIce Cream SandwichJellybeanKitkatLollipopMarshmallowNougatOreo"
Leif Willerts
sumber
3
takeWhiledapat fst.spandan dropWhilesesuai snd.span.
Laikoni
2

Gaia , 110 byte

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

Cobalah online!

Penjelasan

:          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
Kucing Bisnis
sumber
2

Ruby, 127 byte

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

Mengambil input huruf besar. Cobalah online!

daniero
sumber
2

Pyth , 117 116 byte

Port jawaban Python saya .

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

Coba di sini! atau Periksa Test Suite

Pyth , 99 byte (70 karakter)

-15 byte terima kasih kepada @insert_name_here !

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

Coba di sini!

Tuan Xcoder
sumber
Anda dapat menyimpan 15 byte dengan menggunakan string terkompresi (meskipun jawabannya harus mengandung karakter yang tidak dapat dicetak).
insert_name_here
@insert_name_here Terima kasih.
Tn. 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]

Cobalah online!


Menggunakan regex, 149 byte

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

Cobalah online!

  • 4 byte disimpan pada solusi regex berkat Kevin Cruijssen!
Olivier Grégoire
sumber
1
.splitAkan memposting jawaban yang sama (hanya dengan pembatas yang berbeda) ketika saya membaca tantangan dan tidak dapat menemukan jawaban Java (sampai saya pergi ke halaman jawaban kedua), jadi +1. Adapun jawaban regex, ([a-z]| .)+bisa jadi [a-z ]+, karena Anda diizinkan untuk output "Ice cream sandwich" (" Output mungkin dalam judul kasus (Cupcake) atau benar-benar lebih rendah (eclair). Sandwich es krim dapat dikapitalisasi sesuka Anda. (Saya tidak berharap itu menyebabkan begitu banyak kebingungan ...) ")
Kevin Cruijssen
2

Secara kubik , 1047 852 830 byte

Fungsinya membantu golf program besar ...

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

Cobalah online! Ini adalah 830 byte dalam SBCS Cubally .

  • ~ membaca input, @ mencetaknya. (Ini rusak ketika input tidak valid.)
  • Setiap +.../...+...=7?6{...}membandingkan masukan untuk setiap nilai ASCII ( C, D, E, F, dll) dan mengeksekusi kode dalam{...} jika mereka sama.
  • Setiap blok kode ( {...}) mencetak sisa nama (karakter pertama sudah dicetak).

Terima kasih kepada penerjemah TehCers ASCII ke Cubically yang sangat membantu.

MD XF
sumber
1
Itu 1060 byte
Conor O'Brien
1

V , 125 byte

Ccupcake
donut
eclair
froyo
gingerbread
honeycomb
ice cream sandwich
jellybean
kitkat
lollipop
marshmallow
nougat
oreoÇ^"/d

Cobalah online!

DJMcMayhem
sumber
1

Pyke , 117 byte

Port jawaban Python saya .

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

Coba di sini!

Dikodekan sebagai kode hex, teknik baru bermain golf di Pyke, itu akan menjadi 116 byte :

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

(Tempel dan periksa Use hex encoding?).

Tuan Xcoder
sumber
1
Pyke membutuhkan "rilis Android", bukan?
Erik the Outgolfer
1
@EriktheOutgolfer Memiliki Pokemons, jadi mengapa tidak?
Tn. Xcoder
1

C # , 147 136 129 byte


Data

  • Memasukkan Char c Huruf pertama dari nama versi
  • Keluaran String Nama lengkap versi

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

Tidak disatukan

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

Tidak terbaca dibaca

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

Kode lengkap

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

Rilis

  • v1.0 -147 bytes - Solusi awal.
  • v1.1 - -11 bytes- Olivier Grégoire yang dipinjam Ide .
  • v1.2 - - 7 bytes- Mengubah input fungsi dari eksplisit ke implisit.

Catatan

  • Tidak ada
auhmaan
sumber
Bisakah Anda menyimpan sesuatu dengan menghapus huruf pertama dari setiap nama dan menambahkan string yang Anda ambil dari array ke karakter input?
Shaggy
(char c)bisa sajac
LiefdeWen
1

R, 169 155 byte

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

Dyalog APL, 125 byte

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

Cobalah online!

Bagaimana?

  • ⍵∊⎕A (string panjang) dengan 1 untuk huruf kapital, 0 untuk huruf kecil / spasi.
  • +\ Kelompokkan (nomor yang dikembalikan) ⍵ dengan huruf kapital.
  • ⎕A[...] Huruf kapital ditandai dengan angka
  • ⍵/⍨⍞= Grup ditandai oleh nomor itu
  • {...}'...'Setel ke string panjang
Zacharý
sumber
Pendekatan cerdas.
Adám
1

R, 131 , 126 , 123 , 112 , 178 byte

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

Terima kasih untuk @ Mark karena telah menghemat 5 + 8 + 3 byte

AndriusZ
sumber
1

Recursiva , 130 119 118 byte

+aYQ'upcake!onut!clair!royo!ingerbread!oneycomb!ce cream sandwich!ellybean!itkat!ollipop!arshmallow!ougat!reo''!'-Oa99

Cobalah online!

officialaimm
sumber
1

C (gcc) , 168 byte

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

Cobalah online!

Cole Cameron
sumber
1

PowerShell , 136 134 byte

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

Cobalah online!

Mengambil a [char] karakter input, dalam huruf kecil, dan output dalam huruf kecil.

-2 Berkat saran AdmBorkBork -split0sebagai gantinya -split','.

TessellatingHeckler
sumber
Anda bisa menggunakan 0sebagai pemisah lalu -split0menyimpan tanda kutip.
AdmBorkBork
@AdmBorkBork saran yang bagus, terima kasih!
TessellatingHeckler