Oreo? Không có Lollipop Lollipop, có lẽ?


46

Kể từ năm 2009, tên mã phiên bản của Android đã được đặt theo chủ đề bánh kẹo. Android 1.5 là Cupcake, Android 1.6 là Donut, Android 2.0 là Eclair, v.v. Trên thực tế, tên phiên bản được sắp xếp theo thứ tự abc!

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

Theo thứ tự:

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

Thử thách

Viết một chương trình / chức năng mà phải mất một lá thư từ Cđến Ovà kết quả đầu ra tên mã phiên bản Android tương ứng của nó.

Thông số kỹ thuật

  • Quy tắc I / O tiêu chuẩn được áp dụng .
  • Sơ hở chuẩn bị cấm .
  • Bạn có thể chọn hỗ trợ đầu vào chữ thường hoặc đầu vào chữ hoa hoặc thậm chí cả hai.
  • Đầu ra có thể trong trường hợp tiêu đề ( Cupcake) hoặc hoàn toàn thấp hơn ( eclair). Ice cream sandwichcó thể được viết hoa theo cách bạn muốn. (Tôi không mong đợi nó sẽ gây ra nhiều nhầm lẫn ...)
  • Thách thức này không phải là tìm ra cách tiếp cận ngắn nhất trong tất cả các ngôn ngữ, mà là tìm cách tiếp cận ngắn nhất trong mỗi ngôn ngữ .
  • Mã của bạn sẽ được ghi theo byte , thường là trong mã hóa UTF-8, trừ khi được quy định khác.
  • Các hàm tích hợp (Mathicala có thể có một: P) tính toán chuỗi này được cho phép nhưng bao gồm một giải pháp không dựa vào tích hợp được khuyến khích.
  • Giải thích, ngay cả đối với các ngôn ngữ "thực tế", được khuyến khích .

Các trường hợp thử nghiệm

Đây là chữ hoa và trường hợp tiêu đề.

Input   Output

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

Trong một vài định dạng tốt hơn:

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 Bạn đang nói nó không phải là bản sao vì nó dễ hơn? Đây là một bản sao chính xác bởi vì nó là một phiên bản dễ dàng hơn của một câu hỏi hiện có. Chúng tôi đã thực hiện loại câu hỏi này cho đến chết và câu hỏi này hoàn toàn không có gì mới hoặc thú vị đối với thể loại này.
Thuật sĩ lúa mì

2
@WheatWizard Tôi nghĩ rằng cái trước là một bản dupe tốt hơn, vì cái sau là nguồn bị hạn chế.
Ông Xcoder

9
Nó có thể là một bản sao của một số thách thức khác. Nhưng hãy giúp tôi nhận ra quái vật của tôi đang yêu cầu chuyển đổi chuỗi thành biểu tượng (dẫn đến các giải pháp dựa trên hàm băm). Đây là yêu cầu ký hiệu cho chuỗi.
Arnauld


5
@MagicOctopusUrn Vâng, tôi cũng thấy vậy. Thật không may, nó không bao gồm MARSHMALLOWvà sau này.
mbomb007

Câu trả lời:


14

Than , 73 byte

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

Hãy thử trực tuyến! I / O là trong trường hợp thấp hơn. Dựa trên phiên bản dài dòng này . Giải trình:

                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
Tôi ... cái gì? Làm sao.
Bạch tuộc ma thuật Urn

@MagicOctopusUrn Xin lỗi vì lúc đó tôi quá bận để thêm lời giải thích. Hy vọng điều này là đủ.
Neil

1
Ôi chà, tôi không biết nó đã nén dây!
Bạch tuộc ma thuật Urn

Làm thế nào Char than đập SOGL ở đây chỉ là không thể tin được.
Erik the Outgolfer

Jelly vẫn đang đánh bại nó: niềm vui: codegolf.stackexchange.com/a/140092/73675
Hugo H

14

Bash + Lõi sử dụng 131 128 122 117 byte.

Kịch bản được mã hóa thành Base64 vì nó chứa các ký tự đặc biệt (kỳ lạ).

Chỉ chấp nhận ký tự tên mã Android bằng chữ thường làm tham số vị trí đầu tiên của nó. Trả về tên mã đầy đủ cũng bằng chữ thường .

CiPBUeICicG5tJ8W5a0Pc/hYuw7hkNMSIYkAPjARkdgFrdbh3NJgTmB4gRPiiQDJAaOyBH4ki14C
QDeKRNQJ8IJYER411DAnx0SO4CAKYmFzZTMyICQwfHRyICdBLVo0NwonICdhLXoKICd8Z3JlcCBe
JDEK

Giải thích:

#�Q��������s�X����!�>0�������`N`x������~$�^@7�D�    ��X5�0'�D�� 
base32 $0|tr 'A-Z47
' 'a-z
 '|grep ^$1
  • Hai dòng đầu tiên là blob nhị phân với dữ liệu (xem phần cuối của câu trả lời để biết thêm thông tin). Dòng đầu tiên trống, để tránh các vấn đề với Bash, vì nếu không, nó có thể nghĩ rằng nó đang được cung cấp với một tệp nhị phân.
  • base32 $0 mã hóa nội dung tập lệnh bằng Base32, với gói dòng mặc định gồm 76 ký tự.
  • tr 'A-Z47\n' 'a-z\n '(lưu ý rằng \nđược viết dưới dạng một dòng mới theo nghĩa đen) sẽ viết thường đầu vào và thay thế 4 , 7\nbằng \n, không giankhông gian tương ứng.
  • grep ^$1 sẽ xuất các dòng khớp với chuỗi được cung cấp làm đối số đầu tiên cho tập lệnh.

Dữ liệu nhị phân

Luồng octet này đã được giả mạo để nó không chứa các dòng mới và khi nó được giải mã bằng Base32 theo RFC 4648, chuỗi kết quả là danh sách các tên mã Android (sử dụng 4 làm dấu phân cách vật phẩm và 7 để thay thế ký tự khoảng trắng). Trong số các đặc thù của nó, nó bắt đầu bằng một ký tự dòng mới và hàm băm ( #) để nó hoạt động như một nhận xét và do đó, không được trình thông dịch thực thi.

Ngoài ra, việc gói dòng mặc định tới 76 ký tự của triển khai Base32 này đã giúp tôi một byte, khi tôi sắp xếp lại các mục để sử dụng ngắt dòng như một trong các không gian bánh sandwich Kem .


Ngoài ra, và đi một chút off-topic, tôi nghĩ rằng Google sẽ không trực tiếp quảng cáo sản phẩm thương mại trong tên mã Android.


2
Đẹp, đây là một câu trả lời thực sự mát mẻ! Chào mừng đến với trang web :)
DJMcMayhem

Một câu trả lời khác của Bash: codegolf.stackexchange.com/a/140147/41835
Helio

1
Phiên bản này có lỗi, ít nhất là trên hệ thống của tôi (bash 4.4.12, coreutils 8.27). Đối với f, nó xuất ra hai dòng: một với froyovà một với bí ẩn fgeyltmuzteibno.
MarSoft

1
@MarSoft: Cảm ơn! Đã sửa. Điều đáng tiếc là bây giờ tôi cần thêm một byte.
Helio

@MarSoft: Đã giải quyết! Bây giờ với cùng một byte!
Helio


11

Bash + Sử dụng lõi (Grep): 132 130 byte

Đơn giản như có thể

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

1
Nhập thông qua ddlà thông minh, nhưng bạn có thể lưu dưới dạng tập lệnh và sử dụng $1thay thế?
Dom Hastings

11

Thạch , 57 byte

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

Hãy thử trực tuyến!

-5 cảm ơn Jonathan Allan .


Lưu bốn byte bằng cách sử dụng trình giữ chỗ cho các khoảng trắng trong "bánh sandwich kem" và sử dụng khoảng trắng để tách, ví dụ:Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Jonathan Allan

... thực sự tạo ra năm byte đó (tôi đã sử dụng "hang ổ" khi "clair" có trong từ điển):Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
Jonathan Allan

@Jonathan ALLan cảm ơn ... chờ đợi tại sao tôi cần F? ồ, bởi vì tôi nhận được đầu vào là một chuỗi không phải char
Erik the Outgolfer 24/08/17

8

C ++, 206 201 198 byte

Cảm ơn @sergiol đã giúp tiết kiệm 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]);}

Hãy thử trực tuyến!

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

Chà, nó bắt đầu là C ++, nhưng bây giờ nó cũng là C hợp lệ và một số byte có thể được lưu bằng cách biên dịch nó thành C.

Hãy thử trực tuyến!


1
Cố gắng thất bại của tôi để biến nó ngắn hơn bằng cách xóa chữ cái đầu tiên của mỗi mục: tio.run/ Kẻ
sergiol

@sergiol Cảm ơn! Tôi đã có thể lưu ba byte với điều đó sau một chút chơi golf.
Steadybox

4
#importtrong c ++? tôi đang thiếu gì ở đây
Abhinav Gauniyal

@AbhinavGauniyal: IIRC Tôi nghĩ rằng một số cảnh báo biên dịch cũng khuyên tôi nên thêm #import <cstdio>vì thiếu #include <stdio.h>; hoặc có thể tôi sai
sergiol

@AbhinavGauniyal Đó không phải là C ++ tiêu chuẩn, nhưng ít nhất GCC và MSVC có nó.
Steadybox

7

JavaScript (ES6), 137 136 byte

Đã lưu 1 byte nhờ Neil

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

Bản giới thiệu


bạn có thể bao gồm khoảng trắng trong phạm vi ký tự không, có thể bằng \ s? chưa sử dụng nhiều JS Regex
michi7x7

1
@ michi7x7 Hes cần trận đấu dừng ở chữ in hoa trừ trường hợp Ice Cream Sandwich, mặc dù ([a-z]| .)+(tiết kiệm 1 byte) sẽ hoạt động ngay cả với Ice Cream Sandwich ở giữa chuỗi (nó sẽ bắt đầu thất bại khi tên mã đạt S Tuy nhiên).
Neil

@Neil tốt, [a-z\s]+không khớp chữ in hoa. Tôi chỉ không biết liệu bạn có thể làm điều đó trong JS
michi7x7

@ michi7x7 Vậy nó sẽ hoạt động như thế nào với Ice Cream Sandwich?
Neil

2
Sử dụng Ice cream sandwich, như trong trường hợp thử nghiệm (mặc dù đây không phải là Trường hợp tiêu đề)
michi7x7

5

Japt , 81 79 byte

Chứa một vài ký tự sẽ không hiển thị ở đây.

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

Kiểm tra nó

  • 2 byte được lưu nhờ Oliver .

Giải trình

Nhập vào ngầm định của chuỗi ký tự viết hoa U.

Một chuỗi nén (tất cả mọi thứ giữa các backticks) của các tên, được phân tách bằng một fvà không có chữ cái đầu tiên của chúng được chia ( q) thành một mảng trên f.

Trong mảng đó, chúng ta có được phần tử tại chỉ mục ( g) của Umã ký tự s. (Yay, gói chỉ mục!)

Chúng tôi nối thêm nó Uvà ngầm xuất chuỗi kết quả.


1
Đẹp. fThay vào đó, bạn có thể lưu một vài byte nếu bạn tách ra nếu dòng mới: ethproductions.github.io/japt/ mẹo
Oliver

@Oliver: Ồ, tốt, cảm ơn :) Trên điện thoại của tôi, đi bộ xuống phố nên chắc chắn sẽ không nhận được điều đó trong một thời gian (nếu có).
Xù xì

5

VBA Excel, 137 134 132 byte

Anonymous VBE chức năng cửa sổ ngay lập tức mà sẽ đưa đầu vào như kiểu mong đợi Variant\Stringvà thời gian 1tổ chức một vốn lá thư từ tế bào [A1]và đầu ra để VBE chức năng cửa sổ ngay lập tức

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

-5 Byte để thay đổi khoảng trắng ce cream sandwichtừ (char 32) thành  (char 160) `` (char 127) và xóa dấu phân cách dấu phẩy trong Splithàm


4

SOGL V0.12 , 81 byte

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

Hãy thử nó ở đây!

Giải trình:

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

Bây giờ có phiên bản 80 byte ngắn hơn , nhưng tôi đã thêm + 2 / -2 dựng sẵn vì thử thách này: p

Chuỗi nén được phân chia như "cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"để sử dụng tối đa các từ tiếng Anh (nhiều từ không có trong từ điển SOGL), ngay bây giờ tôi không thể tìm thấy bất kỳ cải tiến nào.


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

Hãy thử trực tuyến!

Điều này hoạt động bằng cách tự sửa đổi chương trình để đặt <trước tên chính xác để in, vị trí của nó được xác định bởi giá trị của chữ cái được nhập.


3

APL Dyalog, 158 143 131 byte

Lưu 1 byte nhờ @ Zacharý

12 byte được lưu nhờ @Gil

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

Hãy thử trực tuyến!

Làm sao?

',,,upcake...' - danh sách các từ

','(1↓¨=⊂⊢) - chia cho ','

(⎕A⍳⍵)⊃ - lấy từ vị trí của đối số trong bảng chữ cái

⍵, - và thêm vào thư


Tại sao bạn mô tả như phẳng?
Zacharý

Ngoài ra, {⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}hoạt động cho 1 byte ít hơn!
Zacharý

@ Zacharý vì nó là ... "trộn". tốt đẹp tại sao mà không phải ↑?
Uriel

Bởi vì cũng được làm phẳng, nhưng thực sự làm phẳng và không "trộn". ↑(1 2)(3 4)KHÔNG phẳng, trong khi ∊(1 2)(3 4)là.
Zacharý

@ Zacharý OP đã thay đổi rằng ... LẠI.
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")

Tôi chưa bao giờ nghĩ đến việc sử dụng excel theo cách này. Hoàn hảo. Bây giờ làm điều đó với WORD
tisaconundrum

@tisaconundrum - chúng tôi không nói về điều đáng nguyền rủa đó; Ngay cả VBA cũng không thể cứu nó
Taylor Scott

3

C (gcc) , 195 192 190 byte

-2 byte nhờ @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]);}

Hãy thử trực tuyến!


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

Hãy thử trực tuyến!


2
Tcl! Bạn không thấy quá nhiều giải pháp Tcl ở đây. Thật là xấu hổ.
Silvio Mayolo

2

Haskell, 145 byte

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

3
takeWhilecó thể fst.spandropWhiletheo đó snd.span.
Laikoni

2

Gaia , 110 byte

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

Hãy thử trực tuyến!

Giải trình

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

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

Mất đầu vào chữ hoa. Hãy thử trực tuyến!


2

Pyth , 117 116 byte

Cổng câu trả lời Python của tôi .

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

Hãy thử nó ở đây! hoặc Kiểm tra bộ thử nghiệm

Pyth , 99 byte (70 ký tự)

-15 byte nhờ @insert_name_here !

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

Hãy thử nó ở đây!


Bạn có thể lưu 15 byte bằng cách sử dụng các chuỗi được nén (mặc dù câu trả lời sẽ phải chứa các ký tự không thể in được).
insert_name_here

@insert_name_here Cảm ơn.
Ông 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]

Hãy thử trực tuyến!


Sử dụng biểu thức chính quy, 149 byte

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

Hãy thử trực tuyến!

  • 4 byte được lưu trên giải pháp regex nhờ Kevin Cruijssen!

1
Đã định đăng cùng một .splitcâu trả lời (chỉ với các dấu phân cách khác nhau) khi tôi đọc thử thách và không thể tìm thấy câu trả lời Java (cho đến khi tôi đi đến trang trả lời thứ hai), nên +1. Đối với câu trả lời regex, ([a-z]| .)+có thể [a-z ]+, vì bạn được phép xuất "Bánh sandwich kem" (" Đầu ra có thể ở dạng tiêu đề (Cupcake) hoặc chữ thường hoàn toàn (eclair). Bánh sandwich kem có thể được viết hoa theo cách bạn muốn. (Tôi không mong đợi nó sẽ gây ra nhiều nhầm lẫn ...) ")
Kevin Cruijssen

2

Về cơ bản , 1047 852 830 byte

Chức năng chắc chắn giúp chơi golf các chương trình lớn ...

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

Hãy thử trực tuyến! Đây là 830 byte trong SBCS của Cuba .

  • ~đọc đầu vào, @in nó. (Điều này phá vỡ khi đầu vào không hợp lệ.)
  • Mỗi phòng trong số +.../...+...=7?6{...}so sánh đầu vào cho mỗi giá trị ASCII ( C, D, E, F, vv) và thực thi mã trong {...}khi họ đều bình đẳng.
  • Mỗi khối mã ( {...}) in phần còn lại của tên (ký tự đầu tiên đã được in).

Cảm ơn ASCII của TehPers cho dịch giả Cuba , điều này rất hữu ích.


1
Đó là 1060 byte
Conor O'Brien


1

Pyke , 117 byte

Cổng câu trả lời Python của tôi .

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

Hãy thử nó ở đây!

Được mã hóa dưới dạng mã hex, kỹ thuật chơi gôn mới ở Pyke, sẽ là 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

(Dán và kiểm tra Use hex encoding?).


1
Pyke cần một bản dựng "Android phát hành" phải không?
Erik the Outgolfer

1
@EriktheOutgolfer Nó có Pokemons, vậy tại sao không?
Ông Xcoder

1

C # , 147 136 129 byte


Dữ liệu

  • Đầu vào Char c Chữ cái đầu tiên của tên phiên bản
  • Đầu ra String Tên đầy đủ của phiên bản

Chơi gôn

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

Ung dung

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

Ungolfed có thể đọc được

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

Mã đầy đủ

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

Phát hành

  • v1.0 - 147 bytes- Giải pháp ban đầu.
  • v1.1 - -11 bytes- Mượn ý tưởng của Olivier Grégoire .
  • v1.2 - - 7 bytes- Thay đổi đầu vào chức năng từ rõ ràng sang ẩn.

Ghi chú

  • không ai

Bạn có thể lưu bất cứ điều gì bằng cách xóa chữ cái đầu tiên khỏi mỗi tên và nối thêm chuỗi bạn lấy từ mảng vào ký tự đầu vào không?
Xù xì

(char c)chỉ có thể làc
LiefdeWen

1

R, 169 155 byte

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

1

APL Dyalog, 125 byte

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

Hãy thử trực tuyến!

Làm sao?

  • ⍵∊⎕A (chuỗi dài) với 1 cho chữ in hoa, 0 cho chữ thường / dấu cách.
  • +\ Nhóm (trả về số) bằng chữ in hoa.
  • ⎕A[...] Chữ in hoa được ký hiệu bằng một số
  • ⍵/⍨⍞= Nhóm được biểu thị bằng số đó
  • {...}'...'Đặt thành chuỗi dài

Cách tiếp cận thông minh.
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)

Cảm ơn @Mark vì đã lưu 5 + 8 + 3 byte




1

PowerShell , 136 134 byte

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

Hãy thử trực tuyến!

Lấy một [char]ký tự đầu vào, viết thường và đầu ra bằng chữ thường.

-2 cảm ơn đề nghị của admBorkBork -split0thay vì -split','.


Bạn có thể sử dụng 0như một dấu phân cách và sau đó -split0để lưu các trích dẫn.
admBorkBork

@AdmBorkBork đề nghị tốt, cảm ơn!
TessellatingHeckler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.