Oreo? Hayır… Lollipop, belki?


46

2009'dan beri, Android'in sürüm kod adları şekerleme temalı olmuştur. 1.5 Android Cupcake, Android 1.6 Donut, Android 2.0 Eclair, vb .. Aslında, sürüm adları alfabetik!

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

Sırayla:

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

Meydan okuma

Bir yaz programı / fonksiyonu bir mektup alır Cetmek Ove ilgili Android sürümü kod adını verir.

Özellikler

  • Standart G / Ç kuralları geçerlidir .
  • Standart boşluklar vardır yasak .
  • Küçük harfli girişi veya büyük harfli girişi ya da ikisini birden desteklemeyi seçebilirsiniz.
  • Çıktı başlık ( Cupcake) veya tamamen küçük harf ( eclair) olabilir. Ice cream sandwichancak istediğiniz şekilde büyük harfle yazılabilir. (Çok fazla karışıklığa neden olmasını beklemiyordum ...)
  • Bu zorluk, tüm dillerde en kısa yaklaşımı bulmakla ilgili değil, her dilde en kısa yaklaşımı bulmakla ilgilidir .
  • Kodunuz , aksi belirtilmedikçe, genellikle UTF-8 kodlamasında bayt cinsinden puanlanacaktır .
  • Bu sırayı hesaplayan yerleşik işlevlere (Mathematica bir tane olabilir: P) izin verilir, ancak yerleşik bir sisteme dayanmayan bir çözümü de içerir.
  • "Pratik" diller için bile açıklamalar teşvik edilmektedir .

Test durumları

Bunlar büyük harf ve unvan durumu.

Input   Output

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

Birkaç daha iyi formatta:

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 Daha kolay değil mi dupe değil diyorsunuz? Bu tam bir yücedir çünkü mevcut bir sorunun daha kolay bir versiyonudur. Bu tür bir soruyu ölüme çoktan yaptım ve bu kesinlikle türe yeni veya ilginç bir şey getirmedi.
Buğday Sihirbazı,

2
@WheatWizard Eski kısıtlı olduğundan, eski daha iyi bir dupe olduğunu düşünüyorum.
Bay Xcoder,

9
Başka bir zorluğun etkisi olabilir. Ama canavarımın , sembol dönüşümünü (hash tabanlı çözümlere götüren) dizge istediğini anlamama yardım et . Bu dize sembol soruyor.
Arnauld,


5
@ MagicOctopusUrn Evet, ben de gördüm. Ne yazık ki, içermez MARSHMALLOWve sonra.
mbomb007

Yanıtlar:


14

Kömür , 73 bayt

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

Çevrimiçi deneyin! G / Ç küçük harflidir. Bu ayrıntılı versiyona göre . Açıklama:

                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
Ben ne? Nasıl.
Magic Octopus Urn

@ MagicOctopusUrn Maalesef, bir açıklama eklemek için çok meşguldüm. Umarım bu yeterli.
Neil

1
Vay canına, dizeleri sıkıştırdığını bilmiyordum!
Magic Octopus Urn

Kömür SOGL'u nasıl attığını görmek inanılmaz.
Outgolfer Erik

Jelly hala atıyor: sevinç: codegolf.stackexchange.com/a/140092/73675
Hugo H

14

Bash + Core, 131 128 122 117 bayt kullanır.

Komut, Base64 olarak kodlanmıştır, çünkü özel (tuhaf) karakterler içermektedir.

Android kod adı harfini yalnızca küçük harflerle ilk konumsal parametresi olarak kabul eder. Kodun tamamını küçük harflerle de döndürür .

CiPBUeICicG5tJ8W5a0Pc/hYuw7hkNMSIYkAPjARkdgFrdbh3NJgTmB4gRPiiQDJAaOyBH4ki14C
QDeKRNQJ8IJYER411DAnx0SO4CAKYmFzZTMyICQwfHRyICdBLVo0NwonICdhLXoKICd8Z3JlcCBe
JDEK

Açıklama:

#�Q��������s�X����!�>0�������`N`x������~$�^@7�D�    ��X5�0'�D�� 
base32 $0|tr 'A-Z47
' 'a-z
 '|grep ^$1
  • İlk iki satır veri içeren ikili bloktur (daha fazla bilgi için cevabın sonuna bakınız). İlk satır boş, Bash ile sorunlardan kaçınmak için, aksi halde bunun bir ikili dosya ile beslendiğini düşünebilir.
  • base32 $0 betiğin içeriğini Base32 ile kodlar, varsayılan satır 76 karakterdir.
  • tr 'A-Z47\n' 'a-z\n '(Bu not \ndeğişmez bir yeni satır olarak yazılır) giriş küçük harf ve yerini alacak 4 , 7 ve \ngöre \n, alan ve alan ise.
  • grep ^$1 betiğe ilk argüman olarak verilen dizgeyle eşleşen satırları gösterecektir.

Ikili veri

Bu sekizli akış, yeni satırlar içermemesi ve RFC 4648'e göre Base32 ile kodu çözüldüğü zaman, ortaya çıkan dize Android kod adlarının listesidir ( boşluk karakterini değiştirmek için 4 ve öğe sınırlayıcı olarak 7 kullanılarak ). Özellikleri arasında, yeni bir karakter ve bir hash ( ) ile başlar , bu yüzden yorum olarak davranır ve bu nedenle tercüman tarafından yürütülmez.#

Ayrıca, bu Base32 uygulamasının 76 karakterine varan varsayılan satır, satır sonunu Dondurma sandviç alanlarından biri olarak kullanmak için öğeleri yeniden düzenlediğim için bana bir bayt yardımcı oldu .


Ayrıca, ve konu dışı biraz gidiş, Google gerektiğini düşünüyorum içinde doğrudan Android kod ad- larından ticari ürünlerin tanıtımı.


2
Güzel, bu gerçekten harika bir cevap! Siteye Hoşgeldiniz :)
DJMcMayhem


1
Bu sürüm, en azından sistemimde (bash 4.4.12, coreutils 8.27) bulunuyor. Çünkü fiki satır çıktı verir: biri froyodiğer diğeri gizemli fgeyltmuzteibno.
MarSoft

1
@MarSoft: Teşekkürler! Sabit. Yazık ki, şimdi bir bayta daha ihtiyacım var.
Helio

@MarSoft: Çözüldü! Şimdi aynı byte ile!
Helio


11

Bash + Core Utils (Grep): 132 130 Bayt

Olabildiğince basit

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

1
Üzerinden giriş ddyapmak zekice, ancak komut dosyası olarak kaydedip $1bunun yerine kullanabilir misiniz?
Dom Hastings

11

Jöle , 57 bayt

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

Çevrimiçi deneyin!

-5 Jonathan Allan'a teşekkürler .


"Dondurmalı sandviç" içindeki alanlar için bir yer tutucu kullanarak ve bölmek için boşlukları kullanarak dört bayttan tasarruf edin, örneğin:Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Jonathan Allan

... aslında beş baytı ("clair" sözlüğündeyken "lair" kullandım):Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
Jonathan Allan

@ JonathanAllan teşekkürler ... bekleyin neden ihtiyacım olsun ki F? oh çünkü karakter char değil bir dize olarak girdi
Erik Outgolfer

8

C ++, 206 201 198 bayt

3 bayttan tasarruf etmeye yardımcı olduğu için @sergiol'a teşekkür ederiz!

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

Çevrimiçi deneyin!

C, 173 bayt

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

Peki, C ++ olarak başladı, ama şimdi C de geçerli, ve bazı baytlar C olarak derleyerek kaydedilebilir.

Çevrimiçi deneyin!


1
Her girişin ilk harfini kaldırarak daha kısa hale getirme girişimim: tio.run/…
sergiol

@sergiol Thanks! Biraz golf oynadıktan sonra bununla üç byte kazanmayı başardım.
Steadybox

4
#importc ++ 'da mı? burada neyi özlüyorum?
Abhinav Gauniyal

@AbhinavGauniyal: IIRC Bazı derleme uyarısı da eklenmesi gerektiğini söyledi #import <cstdio>çünkü eksikliği #include <stdio.h>; ya da ben yanlış olabilirim
sergiol

@AbhinavGauniyal Bu standart C ++ değil, en azından GCC ve MSVC var.
Steadybox

7

JavaScript (ES6), 137 136 bayt

Neil sayesinde 1 bayt kaydedildi

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

gösteri


Boşluk karakter aralığına eklenemez mi, muhtemelen \ s ile? çok kullanmadım JS Regex
michi7x7

1
@ michi7x7 Hes, Ice Cream Sandwich dışında büyük harflerle durmak için eşleşmeye ihtiyaç duyuyor, ancak ([a-z]| .)+(1 byte tasarruf), Ice Cream Sandwich ile bile dizenin ortasındaki (kod adları S'ye ulaştığında başarısız olmaya başlayacak) çalışacaktı. rağmen).
Neil

@Neil, [a-z\s]+büyük harflerle eşleşmiyor. Sadece bunu JS'de yapabilir misin bilmiyorum
michi7x7

@ michi7x7 Peki, Ice Cream Sandwich ile nasıl çalışır?
Neil

2
Ice cream sandwichTest
senaryosundaki

5

Japt , 81 79 bayt

Burada gösterilmeyen birkaç karakter içerir.

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

Dene

  • Oliver sayesinde 2 bayt kaydedildi .

açıklama

Büyük harf karakter dizesinin örtük girişi U.

Adları sıkıştırılmış bir dize (herşeyin tersi arasındaki), filk harfleri ile birlikte ve bunlar olmadan ayrılmış ( q) bir diziye bölünür f.

Bu dizinin içindeki öğeyi s karakter kodunun dizininde ( g) alırız U. (Yay, indeks sarma!)

USonuçta elde edilen dizgeye bunu ekler ve örtük olarak veririz .


1
Güzel. Newlinesf yerine bölüştürseniz bir kaç bayt tasarruf edebilirsiniz : ethproductions.github.io/japt/…
Oliver

@Oliver: Oh, güzel, teşekkürler :) Telefonumda, sokakta yürürken kesinlikle öyle bir şey elde edemezdim (hiç değilse).
Shaggy,

5

Excel VBA, 137 134 132 Bayt

Hücreden bir büyük harf tutarak beklenilen tür Variant\Stringve uzunluğu girdi olarak alan ve VBE acil durum pencere işlevine giden anonim VBE acil pencere işlevi1[A1]

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

Boşluk değiştirmek için -5 bayt ce cream sandwichgelen için (kömürün 32)  (kömürün 160) virgülle ayırıcı `(char 127) ve kaldırma Splitfonksiyonu


4

SOGL V0.12 , 81 bayt

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

Burada dene!

Açıklama:

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

Şimdi daha kısa bir 80 byte sürümü var, fakat bu zorluk nedeniyle + 2 / -2 yerleşiklerini ekledim: p

Sıkıştırılmış dize "cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"İngilizce sözcüklerin maksimum kullanımı için bölünmüştür (çoğu SOGL sözlüğünde değildi), şu anda herhangi bir gelişme bulamıyorum.


4

> <> , 181 bayt

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

Çevrimiçi deneyin!

Bu <, yazdırılacak doğru adın önüne bir yerleştirmek için programı kendiliğinden değiştirerek çalışır ; konumu girilen harfin değeri ile belirlenir.


3

Dyalog APL, 158 143 131 bayt

@ Zacharý sayesinde 1 bayt kurtarıldı

@Gil sayesinde 12 bayt kurtarıldı

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

Çevrimiçi deneyin!

Nasıl?

',,,upcake...' - kelimelerin listesi

','(1↓¨=⊂⊢) - bölün ','

(⎕A⍳⍵)⊃ - argümanın alfabedeki yerini almak

⍵, - ve mektubu ekleyin


Neden dümdüz olarak tanımladın ?
Zacharý,

Ayrıca, {⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}1 daha az bayt için çalışıyor!
Zacharý,

@ Zacharý çünkü ... "mix". güzel! neden ∊ ve değil ↑?
Uriel

Çünkü aynı zamanda düzdür, fakat aslında düzdür ve “karıştırmayınız”. ↑(1 2)(3 4)düz değil iken ∊(1 2)(3 4).
Zacharý,

@ Zacharý OP bunu değiştirdi ... TEKRAR.
Uriel

3

EXCEL, 154 bayt

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

Excel'i bu şekilde kullanmayı hiç düşünmedim. Mükemmel. Şimdi WORD ile yapın
tisaconundrum

@tisaconundrum - biz o lanetli şeyden bahsetmiyoruz; VBA bile kurtaramadı
Taylor Scott

3

C (gcc) , 195 192 190 bayt

@Quentin sayesinde -2 bayt

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

Çevrimiçi deneyin!


3

Tcl , 158 bayt

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

Çevrimiçi deneyin!


2
Tcl! Burada çok fazla Tcl çözümü görmüyorsunuz. Bu bir utanç.
Silvio Mayolo,

2

Haskell, 145 bayt

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

3
takeWhileolabilir fst.spanve dropWhilebuna göre snd.span.
Laikoni

2

Gaia , 110 bayt

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

Çevrimiçi deneyin!

açıklama

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

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

Büyük harf girişi alır. Çevrimiçi deneyin!


2

Pyth , 117 116 bayt

Python cevabımın limanı .

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

Burada dene! veya Test Süitine göz atın

Pyth , 99 bayt (70 karakter)

@ 15 byte @insert_name_here !

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

Burada dene!


Sıkıştırılmış dizeleri kullanarak 15 bayt tasarruf edebilirsiniz (cevabın o zamanlar yazdırılamayan karakterler içermesi gerekir).
insert_name_here

@ insert_name_here Teşekkürler.
Bay Xcoder

2

Java (OpenJDK 8) , 128 bayt

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

Çevrimiçi deneyin!


Regex kullanarak, 149 bayt

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

Çevrimiçi deneyin!

  • Kevin Cruijssen sayesinde regex çözümünde 4 byte tasarruf sağlandı!

1
Mücadeleyi .splitokuduğumda ve bir Java cevabı bulamadığımda (cevapların ikinci sayfasına gidinceye kadar) aynı cevabı göndermek üzereydi (+ cevapların ikinci sayfasına kadar). Regex cevap gelince, ([a-z]| .)+olabilir [a-z ]+çıkış "Dondurma sandviç" (" izin verilir, çünkü çıkış başlık halinde olabilir (Cupcake) veya tamamen küçük harfle (Eclair). Dondurma sandviç gibi ancak sizi harfle olabilir. (Çok fazla karışıklığa neden olmasını beklemiyordum ...) ")
Kevin Cruijssen

2

Kübik olarak , 1047 852 830 bayt

Fonksiyonlar büyük programlar golf yardım emin ...

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

Çevrimiçi deneyin! Bu, Cubically SBCS'deki 830 bayttır .

  • ~girişi okur, @yazdırır. (Bu, giriş geçersiz olduğunda kırılır.)
  • Her biri +.../...+...=7?6{...}her bir ASCII değeri (giriş karşılaştırır C, D, E, F, vb) ve içinde kod çalıştırır {...}eşit ise.
  • Her kod bloğu ( {...}), adın geri kalanını yazdırır (ilk karakter zaten basılmıştır).

Çok yardımcı olan TehPers'in ASCII'sini Kübik çevirmene teşekkürler .


1
Bu 1060 bayt
Conor O'Brien,


1

Pyke , 117 bayt

Python cevabımın limanı .

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

Burada dene!

Pyke'deki yeni golf tekniği olan hex hex kodu ile 116 bayt olacaktır :

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

(Yapıştırın ve kontrol edin Use hex encoding?).


1
Pyke bir "Android bültenleri" yerleşik sağa ihtiyacı var?
Outgolfer Erik

1
@EriktheOutgolfer Pokemons'u var, öyleyse neden olmasın?
Bay Xcoder,

1

C # , 147 136 129 bayt


Veri

  • Giriş Char c Sürüm adının ilk harfi
  • Çıktı String Sürümün tam adı

golfed

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

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

Tam kod

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

Salıverme

  • v1.0 - 147 bytes- İlk çözüm.
  • v1.1 - -11 bytes- Olivier Grégoire'ın fikrini ödünç aldı .
  • v1.2 - - 7 bytes- Fonksiyon girişini açıktan dolaylı olarak değiştirdi.

notlar

  • Yok

İlk harfi her addan kaldırarak ve aldığınız dizeyi diziden giriş karakterine ekleyerek bir şey kaydedebilir misiniz?
Shaggy

(char c)sadece olabilirc
LiefdeWen

1

R, 169 155 bayt

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

1

Dyalog APL, 125 bayt

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

Çevrimiçi deneyin!

Nasıl?

  • ⍵∊⎕A (uzun dize) 1 büyük harf için 1, küçük harf / boşluk için 0 ile.
  • +\ Grup (geri dönen sayılar) capital büyük harflerle.
  • ⎕A[...] Rakamla gösterilen büyük harf
  • ⍵/⍨⍞= Bu numara ile belirtilen grup
  • {...}'...'Uzun dizeye ayarla

Akıllıca yaklaşım.
Adám

1

R, 131 , 126 , 123 , 112 , 178 bayt

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

5 + 8 + 3 bayt kaydettiğiniz için @Mark için teşekkürler



1

C (gcc) , 168 bayt

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

Çevrimiçi deneyin!


1

PowerShell , 136 134 bayt

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

Çevrimiçi deneyin!

Bir Alır [char]küçük harflerle, giriş karakterini ve küçük harflerle çıkışları.

-2, AdmBorkBork'un -split0yerine önerisini yerine getirdi -split','.


Sen kullanabilirsiniz 0ardından ayırıcı olarak ve -split0tırnak kaydedin.
AdmBorkBork

@AdmBorkBork iyi öneri, teşekkürler!
TessellatingHeckler
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.