โอรีโอ? ไม่…อมยิ้มใช่มั้ย


46

ตั้งแต่ปี 2009 ชื่อรหัสเวอร์ชั่นของ Android นั้นมีรูปแบบของขนมหวาน Android 1.5 คือ Cupcake, Android 1.6 คือ Donut, Android 2.0 คือ Eclair และอื่น ๆ ในความเป็นจริงชื่อรุ่นจะเรียงตามตัวอักษร!

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

ในการสั่งซื้อ:

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

ท้าทาย

เขียนโปรแกรม / ฟังก์ชั่นที่ใช้ตัวอักษรจากCถึงOและส่งออกชื่อรหัสเวอร์ชั่น Android ของมัน

ข้อมูลจำเพาะ

  • กฎระเบียบมาตรฐาน I / O ใช้
  • ช่องโหว่มาตรฐานจะต้องห้าม
  • คุณสามารถเลือกที่จะรองรับอินพุตตัวพิมพ์เล็กหรืออินพุตตัวพิมพ์ใหญ่หรือทั้งสองอย่างก็ได้
  • ผลลัพธ์อาจเป็นตัวพิมพ์ใหญ่ ( Cupcake) หรือตัวพิมพ์เล็กทั้งหมด ( eclair) Ice cream sandwichอาจเป็นตัวพิมพ์ใหญ่ แต่คุณต้องการ (ฉันไม่ได้คาดหวังว่ามันจะทำให้เกิดความสับสนมาก ... )
  • ความท้าทายนี้ไม่ได้เกี่ยวกับการหาวิธีการที่สั้นที่สุดในทุกภาษาค่อนข้างมันเป็นเรื่องเกี่ยวกับการหาวิธีการที่สั้นที่สุดในแต่ละภาษา
  • รหัสของคุณจะได้รับคะแนนเป็นไบต์มักจะอยู่ในการเข้ารหัส UTF-8 เว้นแต่จะระบุไว้เป็นอย่างอื่น
  • ฟังก์ชั่นในตัว (Mathematica อาจมีหนึ่ง: P) ที่คำนวณลำดับนี้ได้รับอนุญาตแต่รวมถึงการแก้ปัญหาที่ไม่ต้องพึ่งพาบิวด์อิน
  • คำอธิบายแม้สำหรับภาษา "ปฏิบัติ" จะได้รับการสนับสนุน

กรณีทดสอบ

นี่คือตัวพิมพ์ใหญ่และตัวพิมพ์ชื่อเรื่อง

Input   Output

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

ในรูปแบบที่ดีขึ้นไม่กี่:

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 คุณกำลังบอกว่ามันไม่ใช่คนหลอกลวงเพราะมันง่ายกว่าเหรอ? นี่คือการทดสอบที่แม่นยำเนื่องจากเป็นคำถามที่ง่ายกว่าเดิม เราได้ทำคำถามประเภทนี้ไปสู่ความตายแล้วและสิ่งนี้ไม่ได้ให้อะไรที่แปลกใหม่หรือน่าสนใจกับประเภท
ข้าวสาลีตัวช่วยสร้าง

2
@Weateat ตัวช่วยสร้างฉันคิดว่าตัวแรกคือตัวล่อที่ดีกว่าเนื่องจากตัวหลังเป็นแหล่ง จำกัด
Mr. Xcoder

9
มันอาจเป็นความท้าทายอื่น ๆ แต่ช่วยฉันรู้ว่าสัตว์ประหลาดของฉันกำลังขอให้แปลงสตริงเป็นสัญลักษณ์ (ซึ่งนำไปสู่การแก้ปัญหาแฮช) อันนี้ขอสัญลักษณ์แทนสตริง
Arnauld


5
@ MagicOctopusUrn ใช่ฉันเห็นด้วย น่าเสียดายที่มันไม่รวมMARSHMALLOWและในภายหลัง
mbomb007

คำตอบ:


14

ถ่าน , 73 ไบต์

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

ลองออนไลน์! I / O เป็นตัวพิมพ์เล็ก ขึ้นอยู่กับรุ่น verboseนี้ คำอธิบาย:

                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
ฉัน ... อะไรนะ? อย่างไร
Magic Octopus Urn

@MagicOctopusUrn ขออภัยฉันไม่ว่างที่จะเพิ่มคำอธิบายในเวลานั้น หวังว่าอันนี้พอเพียง
Neil

1
โอ้ว้าวฉันไม่รู้ว่ามันบีบอัดสตริง!
Magic Octopus Urn

วิธีที่ Charcoal ชนะ SOGL ที่นี่นั้นไม่น่าเชื่อเลย
Erik the Outgolfer

เยลลี่ยังคงเต้นต่อไป: จอย: codegolf.stackexchange.com/a/140092/73675
Hugo H

14

Bash + Core Utils 131 128 122 117 ไบต์

สคริปต์ถูกเข้ารหัสเป็น Base64 เนื่องจากมีอักขระพิเศษ (แปลก)

ยอมรับตัวอักษรชื่อไฟล์ Android เฉพาะในตัวพิมพ์เล็กเป็นพารามิเตอร์ตำแหน่งแรก ผลตอบแทนที่ได้สมญานามเต็มยังอยู่ในตัวพิมพ์เล็ก

CiPBUeICicG5tJ8W5a0Pc/hYuw7hkNMSIYkAPjARkdgFrdbh3NJgTmB4gRPiiQDJAaOyBH4ki14C
QDeKRNQJ8IJYER411DAnx0SO4CAKYmFzZTMyICQwfHRyICdBLVo0NwonICdhLXoKICd8Z3JlcCBe
JDEK

ชี้แจง:

#�Q��������s�X����!�>0�������`N`x������~$�^@7�D�    ��X5�0'�D�� 
base32 $0|tr 'A-Z47
' 'a-z
 '|grep ^$1
  • สองบรรทัดแรกคือหยดไบนารีที่มีข้อมูล (ดูที่ส่วนท้ายของคำตอบสำหรับข้อมูลเพิ่มเติม) บรรทัดแรกว่างเปล่าเพื่อหลีกเลี่ยงปัญหากับ Bash มิฉะนั้นอาจคิดว่ากำลังถูกป้อนด้วยไฟล์ไบนารี
  • base32 $0 เข้ารหัสเนื้อหาสคริปต์ด้วย Base32 พร้อมการตัดบรรทัดเริ่มต้นที่ 76 อักขระ
  • tr 'A-Z47\n' 'a-z\n '(หมายเหตุว่า\nจะเขียนเป็นตัวอักษรขึ้นบรรทัดใหม่) จะเป็นตัวพิมพ์เล็กเข้าและแทนที่4 , 7และ\nโดย\n, พื้นที่และพื้นที่ตามลำดับ
  • grep ^$1 จะส่งออกบรรทัดที่ตรงกับสตริงที่ให้ไว้เป็นอาร์กิวเมนต์แรกกับสคริปต์

ข้อมูลไบนารี

สตรีมอ็อกเท็ตนี้ถูกปลอมแปลงดังนั้นจึงไม่มีการขึ้นบรรทัดใหม่และเมื่อถอดรหัสด้วย Base32 ตาม RFC 4648 สตริงผลลัพธ์คือรายการของชื่อรหัส Android (ใช้4เป็นตัวคั่นรายการและ7เพื่อแทนที่อักขระเว้นวรรค ) ในลักษณะเฉพาะของมันเริ่มต้นด้วยอักขระขึ้นบรรทัดใหม่และแฮช ( #) เพื่อให้ทำงานเป็นความคิดเห็นและดังนั้นจึงไม่ถูกดำเนินการโดยล่าม

นอกจากนี้การตัดเส้นตามค่าเริ่มต้นที่ 76 อักขระของการใช้งาน Base32 นี้ช่วยให้ฉันได้รับไบต์เนื่องจากฉันจัดเรียงรายการใหม่เพื่อใช้ตัวแบ่งบรรทัดเป็นหนึ่งในช่องว่างไอศกรีมแซนด์วิช


นอกจากนี้และไปนิดนอกเรื่องผมคิดว่า Google ไม่ควรในโดยตรงโฆษณาผลิตภัณฑ์เชิงพาณิชย์ใน codenames Android


2
เยี่ยมมากนี่เป็นคำตอบที่ยอดเยี่ยมจริงๆ! ยินดีต้อนรับสู่เว็บไซต์ :)
DJMcMayhem

คำตอบจาก Bash อีกคำตอบ: codegolf.stackexchange.com/a/140147/41835
Helio

1
รุ่นนี้เป็นรถอย่างน้อยในระบบของฉัน (ทุบตี 4.4.12, coreutils 8.27) สำหรับfมันจะออกผลลัพธ์สองบรรทัด: หนึ่งและอีกส่วนหนึ่งที่มีความลึกลับfroyo fgeyltmuzteibno
MarSoft

1
@ MarSoft: ขอบคุณ! แก้ไขแล้ว. น่าเสียดายที่ตอนนี้ฉันต้องการไบต์มากกว่า
Helio

@ MarSoft: แก้ไขแล้ว! ตอนนี้มีไบต์เดียวกัน!
Helio


11

Bash + Core Utils (Grep): 132 130 Bytes

เรียบง่ายอย่างที่ควรจะเป็น

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

1
อินพุตผ่านddนั้นฉลาด แต่คุณสามารถบันทึกเป็นสคริปต์และใช้$1แทนได้หรือไม่
Dom Hastings

11

เยลลี่ , 57 ไบต์

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

ลองออนไลน์!

-5 ขอบคุณที่โจนาธานอัลลัน


ประหยัดสี่ไบต์โดยใช้ตัวยึดตำแหน่งสำหรับช่องว่างใน "แซนวิชไอศครีม" และใช้ช่องว่างสำหรับการแยกตัวอย่างเช่น:Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Jonathan Allan

... จริง ๆ แล้วทำให้ห้าไบต์ (ฉันใช้ "ถ้ำ" เมื่อ "clair" อยู่ในพจนานุกรม):Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
Jonathan Allan

@Janathan ทุกคนขอบคุณ ... รอทำไมฉันจะต้องF? โอ้เป็นเพราะฉันได้รับการป้อนข้อมูลเป็นสตริงที่ไม่ char
Erik the Outgolfer

8

C ++, 206 201 198 ไบต์

ขอบคุณ @sergiol ที่ช่วยประหยัด 3 ไบต์!

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

ลองออนไลน์!

C, 173 ไบต์

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

มันเริ่มต้นเป็น C ++ แต่ตอนนี้ก็เป็น C ที่ถูกต้องและบางไบต์สามารถบันทึกได้โดยการคอมไพล์มันเป็น C

ลองออนไลน์!


1
ความพยายามที่ล้มเหลวของฉันเพื่อทำให้สั้นลงโดยการลบอักษรตัวแรกของแต่ละรายการ: tio.run/…
sergiol

@ sergiol ขอบคุณ! ฉันสามารถบันทึกสามไบต์ด้วยวิธีนี้หลังจากเล่นกอล์ฟสักหน่อย
Steadybox

4
#importใน c ++ ฉันคิดถึงอะไรที่นี่
Abhinav Gauniyal

@AbhinavGauniyal: IIRC ฉันคิดว่าคำเตือนการรวบรวมบางคำแนะนำฉันยังเพิ่ม#import <cstdio>เพราะขาด#include <stdio.h>; หรือฉันอาจจะผิด
sergiol

@AbhinavGauniyal มันไม่ได้เป็นมาตรฐาน C ++ แต่อย่างน้อย GCC และ MSVC ก็มี
Steadybox

7

JavaScript (ES6), 137 136 ไบต์

บันทึก 1 ไบต์ขอบคุณ Neil

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

การสาธิต


คุณไม่สามารถรวมช่องว่างในช่วงอักขระได้หรือไม่? ยังไม่ได้ใช้ JS Regex มาก
michi7x7

1
@ michi7x7 เขาต้องการการจับคู่เพื่อหยุดที่ตัวอักษรตัวพิมพ์ใหญ่ยกเว้นในกรณีของ Ice Cream Sandwich แม้ว่า([a-z]| .)+(ประหยัด 1 ไบต์) จะทำงานได้แม้กับ Ice Cream Sandwich ตรงกลางของสตริง (มันจะเริ่มต้นล้มเหลวเมื่อชื่อรหัสถึง S แม้ว่า)
Neil

@Neil ดี[a-z\s]+ไม่ตรงกับตัวอักษรตัวพิมพ์ใหญ่ ฉันไม่รู้ว่าคุณสามารถทำได้ใน JS
michi7x7

@ michi7x7 แล้วมันจะทำงานร่วมกับ Ice Cream Sandwich ได้อย่างไร?
Neil

2
ใช้Ice cream sandwichเช่นเดียวกับในกรณีทดสอบ (แม้ว่าไม่ใช่กรณีชื่อ)
michi7x7

5

Japt , 81 79 ไบต์

มีอักขระบางตัวที่จะไม่แสดงที่นี่

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

ทดสอบมัน

  • 2 ไบต์บันทึกขอบคุณที่โอลิเวอร์

คำอธิบาย

Uการป้อนข้อมูลโดยนัยของตัวอักษรตัวพิมพ์ใหญ่

สตริงบีบอัด (ทุกอย่างระหว่าง backticks) ที่ชื่อแยกที่มีfและไม่มีตัวอักษรตัวแรกของพวกเขาคือการแยก ( q) fเข้าแถวบน

ภายในอาร์เรย์นั้นเราจะได้รับองค์ประกอบที่ index ( g) ของUรหัสตัวอักษร (Yay, ดัชนีห่อ!)

เราผนวกที่Uและโดยปริยายออกสตริงผลลัพธ์


1
ดี คุณสามารถบันทึกสองสามไบต์ถ้าคุณแยกfแทนหากขึ้นบรรทัดใหม่: ethproductions.github.io/japt/…
โอลิเวอร์

@Oliver: โอ้ดีขอบคุณ :) บนโทรศัพท์ของฉันเดินไปตามถนนดังนั้นแน่นอนจะไม่ได้รับที่ในขณะที่ (ถ้าทั้งหมด)
Shaggy

5

Excel VBA, 137 134 132 ไบต์

ไม่ประสงค์ออกนาม VBE ฟังก์ชั่นหน้าต่างทันทีที่จะเข้าเป็นชนิดคาดVariant\Stringและระยะเวลา1การถือครองเงินทุนจดหมายจากมือถือ[A1]และผลการทำงานที่หน้าต่าง VBE ทันที

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

-5 ไบต์สำหรับการเปลี่ยนช่องว่างในce cream sandwichจาก(ถ่าน 32) ถึง (ถ่าน 160) `` (ถ่าน 127) และลบเครื่องหมายจุลภาคคั่นในSplitฟังก์ชั่น


4

SOGL V0.12 , 81 ไบต์

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

ลองที่นี่!

คำอธิบาย:

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

ขณะนี้มีรุ่น80 ไบต์ที่สั้นกว่าแต่ฉันเพิ่ม + 2 / -2 บิวด์อินเนื่องจากความท้าทายนี้: p

สตริงที่บีบอัดถูกแบ่งเช่นเดียว"cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"กับการใช้งานสูงสุดของคำภาษาอังกฤษ (หลายคนไม่ได้อยู่ในพจนานุกรม SOGL) ตอนนี้ฉันไม่พบการปรับปรุงใด ๆ


4

> <> , 181 ไบต์

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

ลองออนไลน์!

สิ่งนี้ทำงานโดยการปรับเปลี่ยนโปรแกรมด้วยตนเองเพื่อวาง<หน้าชื่อที่ถูกต้องที่จะพิมพ์ตำแหน่งที่ถูกกำหนดโดยค่าของจดหมายที่ป้อนเข้า


3

Dyalog APL, 158 143 131 ไบต์

บันทึก 1 ไบต์ขอบคุณ @ Zacharý

บันทึก 12 ไบต์ด้วย @Gil

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

ลองออนไลน์!

อย่างไร?

',,,upcake...' - รายการคำ

','(1↓¨=⊂⊢) - แยกโดย ','

(⎕A⍳⍵)⊃ - รับจากสถานที่ของการโต้แย้งในตัวอักษร

⍵, - และต่อท้ายจดหมาย


ทำไมคุณถึงอธิบายว่าแบน
Zacharý

ยังใช้{⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}งานได้ 1 ไบต์น้อยลง!
Zacharý

@ Zacharýเพราะมันคือ ... "มิกซ์" ทำได้ดีนี่! ทำไม ∊ และไม่ใช่↑
Uriel

เพราะแบนเหมือนกัน แต่จริงๆแล้วแบนและไม่ใช่ "มิกซ์" ↑(1 2)(3 4)ไม่แบนในขณะที่∊(1 2)(3 4)เป็น
Zacharý

@ Zacharý OP เปลี่ยนแปลงแล้ว ... อีกครั้ง
Uriel

3

EXCEL, 154 ไบต์

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

ฉันไม่เคยคิดที่จะใช้ excel ด้วยวิธีนี้ สมบูรณ์ ตอนนี้ทำกับคำ
tisaconundrum

@ tisaconundrum - เราไม่พูดถึงสิ่งที่ถูกสาป; แม้แต่ VBA ก็ไม่สามารถบันทึกได้
Taylor Scott



2

Haskell, 145 ไบต์

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

3
takeWhileสามารถfst.spanและตามdropWhile snd.span
Laikoni

2

Gaiaขนาด 110 ไบต์

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

ลองออนไลน์!

คำอธิบาย

:          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

Pyth , 117 116 ไบต์

ท่าเรือคำตอบหลามของฉัน

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

ลองที่นี่! หรือตรวจสอบชุดทดสอบ

Pyth , 99 ไบต์ (70 ตัวอักษร)

-15 ไบต์ขอบคุณ@insert_name_here !

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

ลองที่นี่!


คุณสามารถบันทึก 15 ไบต์โดยใช้สตริงที่บีบอัด (แม้ว่าคำตอบจะต้องมีอักขระที่ไม่สามารถพิมพ์ได้)
insert_name_here

@insert_name_here ขอบคุณ
Mr. Xcoder

2

Java (OpenJDK 8) , 128 ไบต์

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

ลองออนไลน์!


ใช้ regexes 149 ไบต์

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

ลองออนไลน์!

  • บันทึกได้ 4 ไบต์ในโซลูชัน regex ด้วย Kevin Cruijssen!

1
กำลังจะโพสต์.splitคำตอบเดียวกัน(เฉพาะกับตัวคั่นที่แตกต่างกัน) เมื่อฉันอ่านความท้าทายและไม่พบคำตอบ Java (จนกว่าฉันจะไปที่หน้าสองของคำตอบ) ดังนั้น +1 สำหรับคำตอบ regex ([a-z]| .)+อาจเป็น[a-z ]+เพราะคุณได้รับอนุญาตให้ส่งออก "แซนวิชไอศครีม" (" การส่งออกอาจจะอยู่ในชื่อเรื่อง (Cupcake) หรือกรณีที่ต่ำกว่า (eclair) ไอศครีมแซนวิชอาจเป็นตัวพิมพ์ใหญ่ (ฉันไม่ได้คาดหวังว่ามันจะทำให้เกิดความสับสนมาก ... ) ")
Kevin Cruijssen

2

Cubically , 1047 852 830 ไบต์

ฟังก์ชั่นแน่ใจว่าช่วยโปรแกรมกอล์ฟขนาดใหญ่ ...

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

ลองออนไลน์! นี่คือ 830 ไบต์ในSBCS Cubically ของ

  • ~อ่านอินพุต@พิมพ์มัน (สิ่งนี้จะหยุดพักเมื่ออินพุตไม่ถูกต้อง)
  • แต่ละ+.../...+...=7?6{...}เปรียบเทียบการป้อนข้อมูลเพื่อค่า ASCII แต่ละ ( C, D, E, Fฯลฯ ) และรันรหัสภายใน{...}ถ้าพวกเขามีค่าเท่ากัน
  • บล็อคโค้ดแต่ละอัน ( {...}) พิมพ์ชื่อที่เหลือ (ตัวอักษรตัวแรกพิมพ์ออกมาแล้ว)

ขอบคุณASCII ของ TehPers 'ไปยังนักแปลที่มีประโยชน์มาก


1
นั่นคือ 1,060 ไบต์
Conor O'Brien


1

Pyke , 117 ไบต์

ท่าเรือของฉันคำตอบหลาม

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

ลองที่นี่!

เข้ารหัสเป็นรหัสฐานสิบหกเทคนิคใหม่ของการเล่นกอล์ฟใน Pyke จะเป็น116 ไบต์ :

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

(วางและตรวจสอบUse hex encoding?)


1
Pyke ต้องการ builtin "Android release" ใช่ไหม?
Erik the Outgolfer

1
@EriktheOutgolfer มันมีโปเกมอนแล้วทำไมล่ะ?
Mr. Xcoder

1

C # , 147 136 129 ไบต์


ข้อมูล

  • อินพุต Char cอักษรตัวแรกของชื่อเวอร์ชัน
  • เอาต์พุต Stringชื่อเต็มของเวอร์ชัน

แข็งแรงเล่นกอล์ฟ

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

อ่านได้ไม่ดี

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

รหัสเต็ม

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

ข่าว

  • v1.0 - 147 bytes- โซลูชั่นเริ่มต้น
  • v1.1 - -11 bytes- แนวคิดของ Olivier Grégoireที่ยืม มา
  • v1.2 - - 7 bytes- เปลี่ยนฟังก์ชั่นการป้อนข้อมูลจากชัดแจ้งเป็นนัย

หมายเหตุ

  • ไม่มี

คุณสามารถบันทึกอะไรก็ได้โดยการลบอักษรตัวแรกจากแต่ละชื่อและต่อท้ายสตริงที่คุณดึงจากอาร์เรย์ไปยังอักขระอินพุต?
ปุย

(char c)สามารถเป็นได้c
LiefdeWen


1

Dyalog APL ขนาด 125 ไบต์

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

ลองออนไลน์!

อย่างไร?

  • ⍵∊⎕A (สตริงยาว) ด้วย 1 สำหรับตัวพิมพ์ใหญ่ 0 สำหรับตัวพิมพ์เล็ก / ช่องว่าง
  • +\ กลุ่ม (ตัวเลขที่ส่งคืน) ⍵ด้วยตัวพิมพ์ใหญ่
  • ⎕A[...] อักษรตัวใหญ่มีความหมายโดยตัวเลข
  • ⍵/⍨⍞= กลุ่มมีความหมายโดยหมายเลขนั้น
  • {...}'...'ตั้งค่าเป็นสตริงแบบยาว

แนวทางที่ฉลาด
อดัม

1

R, 131 , 126 , 123 , 112 , 178 ไบต์

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

ขอบคุณสำหรับ @Mark สำหรับการบันทึก 5 + 8 + 3 ไบต์




1

PowerShell , 136 134 ไบต์

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

ลองออนไลน์!

ใช้[char]อักขระอินพุตตัวพิมพ์เล็กและเอาต์พุตเป็นตัวพิมพ์เล็ก

-2 ขอบคุณข้อเสนอแนะ AdmBorkBork ไปแทน-split0-split','


คุณสามารถใช้0เป็นตัวคั่นและจากนั้น-split0เพื่อบันทึกคำพูด
AdmBorkBork

@AdmBorkBork คำแนะนำที่ดีขอบคุณ!
TessellatingHeckler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.