オレオ?いや…ロリポップ?


46

2009年以降、Androidのバージョンコード名は菓子をテーマにしています。Android 1.5はカップケーキ、Android 1.6はドーナツ、Android 2.0はエクレアなどです。実際、バージョン名はアルファベット順です!

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は1つ: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
@WheatWizard前者はより良いだと思います。後者はソースが制限されているからです。
— ミスターXcoder

9
それは他の挑戦のofかもしれません。しかし、私のモンスターが文字列から記号への変換を要求していることを認識してください(ハッシュベースのソリューションにつながります)。これは、文字列へのシンボルを要求しています。
— アーナルド


5
@MagicOctopusUrnええ、私もそれを見ました。残念ながら、それ以降は含まれていませんMARSHMALLOW。
— mbomb007

回答:


14

炭、73バイト

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

オンラインでお試しください!I / Oは小文字です。この詳細バージョンに基づきます。説明:

                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
私は…何?どうやって。
— 魔法のタコUr

@MagicOctopusUrn申し訳ありませんが、私は忙しすぎて説明を追加できませんでした。これで十分だと思います。
— ニール

1
ああ、私はそれが文字列を圧縮したことを知りませんでした!
— 魔法のタコUr

ここで炭がどのようにSOGLを打ち負かすかは信じられないほどです。
— エリックアウトゴルファー

ジェリーはまだそれを破っています:joy:codegolf.stackexchange.com/a/140092/73675
— ヒューゴ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
  • 最初の2行は、データを含むバイナリblobです(詳細については、回答の最後を参照してください)。最初の行は空です。Bashの問題を回避するためです。そうしないと、バイナリファイルが供給されていると考えられる場合があります。
  • base32 $0 スクリプトの内容をBase32でエンコードします。デフォルトの行の折り返しは76文字です。
  • tr 'A-Z47\n' 'a-z\n '(ことに留意されたい\nリテラル改行として書かれている)は、入力を小文字と置き換えられます4、7と\nすることにより\n、スペースとスペースそれぞれ。
  • grep ^$1 スクリプトの最初の引数として提供された文字列に一致する行を出力します。

バイナリデータ

このオクテットストリームは偽造されたため、改行を含まず、RFC 4648に従ってBase32でデコードされた場合、結果の文字列はAndroidコードネームのリストになります(項目区切り文字として4を使用し、スペース文字を7に置き換えます)。その特性の中で、改行文字とハッシュ()で始まるため、コメントとして動作するため、インタープリターによって実行されません。#

また、このBase32実装の76文字へのデフォルトの行折り返しは、アイスクリームサンドイッチスペースの1つとして改行を使用するようにアイテムを並べ替えたので、バイトを助けてくれました。


また、オフトピックビットを行く、私はGoogleがないことを考えるにおける直接のAndroidのコードネームでの商用製品を宣伝します。


2
いいですね、これは本当にクールな答えです!サイトへようこそ:)
— DJMcMayhem


1
このバージョンは、少なくとも私のシステムではバグがあります(bash 4.4.12、coreutils 8.27)。forの場合f、2行を出力します。1行目froyoとmysterious行fgeyltmuzteibnoです。
— MarSoft

1
@MarSoft:ありがとう!一定。残念なことに、もう1バイト必要です。
— ヘリオ

@MarSoft:解決済み!同じバイトで!
— ヘリオ


11

バッシュ+コアUtilsの(Grepの):132の 130のバイト

シンプルに

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

1
入力ddは賢いですが、スクリプトとして保存して$1代わりに使用できますか?
— ドムヘイスティングス

11

ゼリー、57バイト

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

オンラインでお試しください!

-5 ジョナサンアランに感謝します。


例えば、「アイスクリームサンドイッチ」内のスペースのためのプレースホルダを使用して分割のためのスペースを使用して、4バイトの保存:Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
— ジョナサン・アラン

...実際にその5バイトを作成します(「クレア」が辞書にある場合、「lair」を使用していました):Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
— ジョナサンアラン

@JonathanAllanありがとう...なぜ私が必要なのFでしょうか?ああ、それは私が文字列として入力を得るため、char型ではありません
— エリックをOutgolfer

8

C ++、206 201 198バイト

3バイトの節約を支援してくれた@sergiolに感謝します!

#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ありがとう!少しのゴルフの後、それで3バイト節約できました。
— Steadybox

4
#importC ++で?ここで何が欠けていますか?
— Abhinav Gauniyal

@AbhinavGauniyal:IIRCいくつかのコンパイル警告が私にも追加する#import <cstdio>ことを勧めたと思う#include <stdio.h>。または私が間違っている可能性があります
— sergiol

@AbhinavGauniyal標準のC ++ではありませんが、少なくともGCCとMSVCにはあります。
— Steadybox

7

JavaScript(ES6)、137 136バイト

ニールのおかげで1バイト節約

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

デモ


おそらく\ sを使用して、文字範囲にスペースを含めることはできませんか?多くのJS正規表現を使用していない
— michi7x7

1
@ michi7x7アイスクリームサンドイッチの場合を除き、大文字で停止するには一致が必要ですが、([a-z]| .)+(1バイトを節約する)アイスクリームサンドイッチが文字列の途中でも機能します(コード名がSに達すると失敗し始めます)しかし)。
— ニール

@Neilも、[a-z\s]+大文字とは一致しません。JSでそれができるかどうか分からない
— michi7x7

@ michi7x7では、アイスクリームサンドイッチとどのように連携しますか?
— ニール

2
使用Ice cream sandwichテストケースのように、(これはタイトルのケースではありませんが)
— michi7x7

5

Japt、81 79バイト

ここに表示されない文字がいくつか含まれています。

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

試して

  • Oliverのおかげで2バイト節約されました。

説明

大文字の文字列の暗黙的な入力U。

名前の圧縮された文字列(バッククォートの間のすべて)は、f最初の文字の有無にかかわらずq、で配列に分割()されfます。

その配列内で、文字コードのインデックス(g)にある要素を取得しUます。(そう、インデックスのラッピング!)

それをU結果の文字列に追加し、暗黙的に出力します。


1
いいね あなたは上のスプリット場合カップルがバイト保存することができますf:代わりに、もし改行ethproductions.github.io/japt/...
— オリバー

@Oliver:ああ、いいね、ありがとう:)私の電話で、通りを歩いているので、間違いなくしばらくの間はそうは思わなかったでしょう(もしあれば)。
— シャギー

5

エクセル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からに(CHAR 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<>

オンラインでお試しください!

これは、プログラムを自己修正して、<印刷する正しい名前の前にaを配置することによって機能します。その名前の位置は、入力された文字の値によって決まります。


3

Dyalog APL、158の 143 131バイト

@Zacharýのおかげで1バイト節約

@Gilのおかげで12バイト節約

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

オンラインでお試しください!

どうやって?

',,,upcake...' -単語のリスト

','(1↓¨=⊂⊢) -分割 ','

(⎕A⍳⍵)⊃ -アルファベットの引数の場所から取る

⍵, -そして、手紙に追加


なぜ↑平坦化と説明したのですか?
— ザカリー

また、{⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}1バイト少なくなります!
— ザカリー

@Zacharýそれは...「ミックス」だからです。良いですね!↑ではなくwhyなのはなぜですか?
— ウリエル

ので∊うまくとして平らが、実際に平らにされていない「ミックス」。↑(1 2)(3 4)平坦ではありません∊(1 2)(3 4)が。
— ザカリー

@ZacharýOPはそれを変えました...もう一度。
— ウリエル

3

EXCEL、154バイト

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

この方法でExcelを使用することは考えたことがありません。パーフェクト。今WORDでそれを行う
— -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。
— ライコニ

2

ガイア、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バイト

私のPython回答のポート。

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

ここで試してみてください!またはテストスイートをチェックしてください

Pyth、99バイト(70文字)

@insert_name_hereのおかげで-15バイト!

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

ここで試してみてください!


圧縮された文字列を使用すると、15バイトを節約できます(ただし、回答には印刷できない文字が含まれている必要があります)。
— insert_name_here

@insert_name_hereありがとう。
— ミスター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]

オンラインでお試しください!


正規表現を使用して、149バイト

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

オンラインでお試しください!

  • Kevin Cruijssenのおかげで正規表現ソリューションで4バイト節約されました!

1
.splitチャレンジを読んでJavaの回答が見つからなかった場合(回答の2番目のページに移動するまで)、同じ回答を(異なる区切り文字でのみ)投稿しようとしていたので、+ 1。正規表現の答えについては、([a-z]| .)+することができ[a-z ]+ますが、出力「アイスクリームサンドイッチ」(」を許可しているため、出力がタイトルケース(カップケーキ)、または完全に下ケース(エクレア)であってもよい。アイスクリームサンドイッチは、しかし、あなたのような大文字することができます。 (私はそれがそんなに混乱を引き起こすとは思わなかった...) ")
— ケビンCruijssen

2

通常、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@}

オンラインでお試しください!これは、CubicallyのSBCSで830バイトです。

  • ~入力を読み取り、@印刷します。(入力が無効な場合、これは中断します。)
  • 各々は、+.../...+...=7?6{...}各ASCII値の入力を比較する(C、D、E、F、など)と内のコードを実行し{...}、それらが等しい場合。
  • 各コードブロック({...})は、残りの名前を印刷します(最初の文字は既に印刷されています)。

非常に役立つTehPersのASCIIからCubicallyへのトランスレーターのおかげです。


1
1060バイト
— コナーオブライエン


1

パイク、117バイト

私のPython回答のポート。

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

ここで試してみてください!

Pykeの新しいゴルフ技術である16進コードとしてエンコードされた場合、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には組み込みの「Androidリリース」が必要ですか?
— エリックアウトゴルファー

1
@EriktheOutgolferそれはポケモンを持っているので、なぜですか?
— ミスター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)];

非ゴルフ

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- 借用 オリヴィエ・グレゴワールのアイデア。
  • 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)

5 + 8 + 3バイトを節約してくれた@Markに感謝




1

PowerShell、136 134バイト

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

オンラインでお試しください!

取り[char]小文字で、入力された文字を、小文字で出力。

-2の-split0代わりにAdmBorkBorkが提案したおかげで-split','。


0セパレータとして使用して-split0から、引用符を保存できます。
— -AdmBorkBork

@AdmBorkBork良い提案、ありがとう!
— TessellatingHeckler
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.