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 C
ke O
dan 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 sandwich
dapat 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
MARSHMALLOW
dan nanti.Jawaban:
Arang , 73 byte
Cobalah online! I / O dalam huruf kecil. Berdasarkan versi verbose ini . Penjelasan:
sumber
Bash + Core Utils
131128122117 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 .
Penjelasan:
base32 $0
mengkodekan konten skrip dengan Base32, dengan garis pembungkus default 76 karakter.tr 'A-Z47\n' 'a-z\n '
(catatan bahwa\n
ditulis sebagai baris baru literal) akan huruf kecil masukan dan mengganti 4 , 7 dan\n
oleh\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
dilangsung mengiklankan produk komersial di codenames Android.sumber
f
, itu menghasilkan dua baris: satu denganfroyo
dan yang lain dengan misteriusfgeyltmuzteibno
.Python 3 , 139 byte
Cobalah online!
sumber
Bash + Core Utils (Grep):
132130 BytesSesederhana mungkin
sumber
dd
pintar, tetapi bisakah Anda menyimpannya sebagai skrip dan menggunakannya$1
?Jelly , 57 byte
Cobalah online!
Terima kasih kepada Jonathan Allan .
sumber
Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
F
? oh itu karena saya mendapat input sebagai string bukan charC ++,
206201198 byteTerima kasih kepada @sergiol untuk membantu menghemat 3 byte!
Cobalah online!
C, 173 byte
Yah, itu dimulai sebagai C ++, tapi sekarang itu juga C yang valid, dan beberapa byte dapat disimpan dengan mengkompilasinya sebagai C.
Cobalah online!
sumber
#import
dalam c ++? Apa yang kulewatkan di sini?#import <cstdio>
karena kurangnya#include <stdio.h>
; atau mungkin saya salahJavaScript (ES6),
137136 byteDisimpan 1 byte berkat Neil
Demo
Tampilkan cuplikan kode
sumber
([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).[a-z\s]+
tidak cocok dengan huruf besar. Saya hanya tidak tahu apakah Anda bisa melakukannya di JSIce cream sandwich
, seperti pada test case (walaupun ini bukan Title Case)Japt ,
8179 byteBerisi beberapa karakter yang tidak akan ditampilkan di sini.
Menguji
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 onf
.Dalam array itu kita mendapatkan elemen di indeks (
g
) dariU
kode karakter. (Yay, pembungkus indeks!)Kami menambahkannya ke
U
dan secara implisit mengeluarkan string yang dihasilkan.sumber
f
sebaliknya jika baris baru: ethproductions.github.io/japt/…Excel VBA,
137134132 BytesFungsi jendela langsung VBE anonim yang mengambil input seperti tipe
Variant\String
dan panjang yang diharapkan1
dengan huruf kapital dari sel[A1]
dan output ke fungsi jendela langsung VBE-5 Bytes untuk mengubah spasi
ce cream sandwich
dari(char 32) menjadi
(char 160)`` (char 127) dan menghapus pembatas koma padaSplit
fungsisumber
SOGL V0.12 , 81 byte
Coba Di Sini!
Penjelasan:
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.sumber
> <> , 181 byte
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.sumber
Dyalog APL,
158143131 byte1 byte disimpan berkat @ Zacharý
12 byte disimpan berkat @Gil
Cobalah online!
Bagaimana?
',,,upcake...'
- daftar kata-kata','(1↓¨=⊂⊢)
- dipisah oleh','
(⎕A⍳⍵)⊃
- ambil dari tempat argumen dalam alfabet⍵,
- dan menambahkan surat itusumber
↑
sebagai rata?{⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}
bekerja untuk 1 byte kurang!∊
rata juga, tetapi sebenarnya rata dan tidak "campur".↑(1 2)(3 4)
TIDAK datar, sedang∊(1 2)(3 4)
.EXCEL, 154 byte
sumber
C (gcc) ,
195192190 byte-2 byte terima kasih kepada @Quentin
Cobalah online!
sumber
Tcl , 158 byte
Cobalah online!
sumber
Haskell, 145 byte
sumber
takeWhile
dapatfst.span
dandropWhile
sesuaisnd.span
.Gaia , 110 byte
Cobalah online!
Penjelasan
sumber
Ruby, 127 byte
Mengambil input huruf besar. Cobalah online!
sumber
Pyth ,
117116 bytePort jawaban Python saya .
Coba di sini! atau Periksa Test Suite
Pyth , 99 byte (70 karakter)
-15 byte terima kasih kepada @insert_name_here !
Coba di sini!
sumber
Java (OpenJDK 8) , 128 byte
Cobalah online!
Menggunakan regex, 149 byte
Cobalah online!
sumber
.split
Akan 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 ...) ")Secara kubik ,
1047852830 byteFungsinya membantu golf program besar ...
Cobalah online! Ini adalah 830 byte dalam SBCS Cubally .
~
membaca input,@
mencetaknya. (Ini rusak ketika input tidak valid.)+.../...+...=7?6{...}
membandingkan masukan untuk setiap nilai ASCII (C
,D
,E
,F
, dll) dan mengeksekusi kode dalam{...}
jika mereka sama.{...}
) mencetak sisa nama (karakter pertama sudah dicetak).Terima kasih kepada penerjemah TehCers ASCII ke Cubically yang sangat membantu.
sumber
V , 125 byte
Cobalah online!
sumber
Pyke , 117 byte
Port jawaban Python saya .
Coba di sini!
Dikodekan sebagai kode hex, teknik baru bermain golf di Pyke, itu akan menjadi 116 byte :
(Tempel dan periksa
Use hex encoding?
).sumber
C # ,
147136129 byteData
Char
c
Huruf pertama dari nama versiString
Nama lengkap versiGolf
Tidak disatukan
Tidak terbaca dibaca
Kode lengkap
Rilis
147 bytes
- Solusi awal.-11 bytes
- Olivier Grégoire yang dipinjam Ide .- 7 bytes
- Mengubah input fungsi dari eksplisit ke implisit.Catatan
sumber
(char c)
bisa sajac
R,
169155 bytesumber
Dyalog APL, 125 byte
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 panjangsumber
R,
131,126,123,112, 178 byteTerima kasih untuk @ Mark karena telah menghemat 5 + 8 + 3 byte
sumber
Recursiva ,
130 119118 byteCobalah online!
sumber
C (gcc) , 168 byte
Cobalah online!
sumber
PowerShell ,
136134 byteCobalah online!
Mengambil a
[char]
karakter input, dalam huruf kecil, dan output dalam huruf kecil.-2 Berkat saran AdmBorkBork
-split0
sebagai gantinya-split','
.sumber
0
sebagai pemisah lalu-split0
menyimpan tanda kutip.