С 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 название версии кода.
Характеристики
- Применяются стандартные правила ввода / вывода .
- Стандартные лазейки будут запрещены .
- Вы можете выбрать либо поддержку ввода в нижнем регистре, либо ввода в верхнем регистре, либо даже и то и другое.
- Вывод может быть в заголовке case (
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
MARSHMALLOW
и позже.Ответы:
Древесный уголь , 73 байта
Попробуйте онлайн! Ввод / вывод в нижнем регистре. На основании этой многословной версии . Объяснение:
источник
Bash + Core Utils
131128122117 байт.Сценарий закодирован как Base64, потому что он содержит специальные (странные) символы.
Принимает букву Android под кодовым именем только в нижнем регистре в качестве первого позиционного параметра. Возвращает полное кодовое имя также в нижнем регистре .
Explaination:
base32 $0
кодирует содержимое скрипта с помощью Base32 с переносом строки по умолчанию из 76 символов.tr 'A-Z47\n' 'a-z\n '
(обратите внимание , что\n
записывается в виде буквального перевода строки) будет в нижнем регистре входа и заменить 4 , 7 и с\n
помощью\n
, пространства и пространства соответственно.grep ^$1
выведет строки, соответствующие строке, указанной в качестве первого аргумента скрипта.Двоичные данные
Этот поток октетов был подделан, поэтому он не содержит символов новой строки, и когда он декодируется с помощью Base32 в соответствии с RFC 4648, полученная строка представляет собой список кодовых имен Android (с использованием 4 в качестве разделителя элементов и 7 для замены символа пробела ). Среди его особенностей он начинается с символа новой строки и hash (
#
), поэтому он ведет себя как комментарий и, следовательно, не выполняется интерпретатором.Кроме того, перенос строки по умолчанию в 76 символов этой реализации Base32 помог мне в байте, так как я переупорядочил элементы, чтобы использовать разрыв строки в качестве одного из пробелов сэндвича с мороженым .
Кроме того , и идти немного не по теме, я думаю , что Google не
внепосредственно рекламировать коммерческие продукты в Android кодовых.источник
f
он выводит две строки: однуfroyo
с загадочной, а другую - загадочнуюfgeyltmuzteibno
.Python 3 , 139 байт
Попробуйте онлайн!
источник
Bash + Core Utils (Grep):
132130 байтПросто, как могло бы быть
источник
dd
умный, но вы могли бы сохранить как скрипт и использовать$1
вместо этого?Желе , 57 байт
Попробуйте онлайн!
-5 спасибо Джонатану Аллану .
источник
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
? о, это потому, что я получаю входные данные в виде строки, а не символаC ++,
206201198 байтовСпасибо @sergiol за помощь в сохранении 3 байтов!
Попробуйте онлайн!
C 173 байта
Ну, это началось как C ++, но теперь это также допустимый C, и некоторые байты можно сохранить, скомпилировав его как C.
Попробуйте онлайн!
источник
#import
в с ++? что мне здесь не хватает?#import <cstdio>
потому что отсутствие#include <stdio.h>
; или, может быть, я ошибаюсьJavaScript (ES6),
137136 байтСохранено 1 байт благодаря Нейлу
демонстрация
Показать фрагмент кода
источник
([a-z]| .)+
(с сохранением 1 байта) сработало бы даже с Ice Cream Sandwich в середине строки (оно начинало сбоить, когда кодовые имена достигали S хотя).[a-z\s]+
не совпадает с заглавными буквами. Я просто не знаю, сможете ли вы сделать это в JSIce cream sandwich
, как в тестовом примере (хотя это неJapt ,
8179 байтСодержит несколько символов, которые здесь не отображаются.
Проверь это
объяснение
Неявный ввод строки символов в верхнем регистре
U
.Сжатая строка (все, что находится между обратными чертами) имен, разделенных
f
первой буквой и без нее, разделяется (q
) на массивf
.Внутри этого массива мы получаем элемент в index (
g
) изU
кода символа s. (Ух, индексная упаковка!)Мы добавляем это к
U
и неявно выводим полученную строку.источник
f
вместо этого разделите их на новыеExcel VBA,
137134132 байтАнонимная функция непосредственного окна VBE, которая принимает входные данные в виде ожидаемого типа
Variant\String
и длины,1
содержащие заглавную букву из ячейки,[A1]
и выводит их в функцию непосредственного окна VBE-5 байт для изменения пространства в
ce cream sandwich
с(полукокса 32) , чтобы
(полукокс 160)`` (127) полукокса и удаления запятой разделителя вSplit
функцииисточник
SOGL V0.12 , 81 байт
Попробуй здесь!
Объяснение:
Теперь есть более короткая 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), сейчас я не могу найти никаких улучшений.источник
> <> , 181 байт
Попробуйте онлайн!
Это работает путем автоматической модификации программы, чтобы поместить
<
перед правильным именем для печати, положение которого определяется значением введенной буквы.источник
Dyalog APL,
158143131 байт1 байт сохранен благодаря @ Zacharý
12 байтов сохранено благодаря @Gil
Попробуйте онлайн!
Как?
',,,upcake...'
- список слов','(1↓¨=⊂⊢)
- разделить на','
(⎕A⍳⍵)⊃
- взять с места аргумента в алфавите⍵,
- и приложить к письмуисточник
↑
как сплющить?{⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}
работает на 1 байт меньше!∊
что тоже сглаживается, но на самом деле сглаживается, а не «смешивается».↑(1 2)(3 4)
НЕ плоский, пока∊(1 2)(3 4)
есть.EXCEL, 154 байта
источник
C (gcc) ,
195192190 байтов-2 байта благодаря @Quentin
Попробуйте онлайн!
источник
Tcl , 158 байт
Попробуйте онлайн!
источник
Haskell, 145 байт
источник
takeWhile
можноfst.span
иdropWhile
соответственноsnd.span
.Gaia , 110 байт
Попробуйте онлайн!
объяснение
источник
Рубин, 127 байт
Принимает ввод в верхнем регистре. Попробуйте онлайн!
источник
Pyth ,
117116 байтовПорт моего Python ответа .
Попробуй это здесь! или проверить набор тестов
Pyth , 99 байт (70 символов)
-15 байт благодаря @insert_name_here !
Попробуй это здесь!
источник
Java (OpenJDK 8) , 128 байт
Попробуйте онлайн!
Используя регулярные выражения, 149 байт
Попробуйте онлайн!
источник
.split
ответ (только с другим разделителем), когда я прочитал задание и не смог найти ответ Java (пока я не перешел на вторую страницу ответов), так что +1. Что касается ответа регулярного выражения,([a-z]| .)+
может быть[a-z ]+
, так как вам разрешено выводить «Сэндвич с мороженым» (« Вывод может быть в заглавном регистре (Cupcake) или полностью в нижнем регистре (эклер). Сэндвич с мороженым может быть заглавным, как вам нравится». (Я не ожидал, что это вызовет столько путаницы ...) ")Кубически ,
1047852830 байтФункции, безусловно, помогают гольфу большие программы ...
Попробуйте онлайн! Это 830 байтов в SBCS Куба .
~
читает ввод,@
печатает его. (Это прерывается, когда ввод неверен.)+.../...+...=7?6{...}
сравнивает входной сигнал с каждым значением ASCII (C
,D
,E
,F
и т.д.) и выполняет код внутри ,{...}
если они равны.{...}
) печатает оставшуюся часть имени (первый символ уже напечатан).Спасибо ASCII от TehPers Кубическому переводчику, что было очень полезно.
источник
V 125 байтов
Попробуйте онлайн!
источник
Пайк , 117 байт
Порт моего Python ответа .
Попробуй это здесь!
Закодированный в виде шестнадцатеричных кодов, новой техники игры в гольф в Pyke, он будет 116 байтов :
(Вставьте и проверьте
Use hex encoding?
).источник
C # ,
147136129 байтДанные
Char
c
Первая буква названия версииString
Полное название версииGolfed
Ungolfed
Ungolfed читаемый
Полный код
релизы
147 bytes
- Исходное решение.-11 bytes
- Заимствовал идею Оливье Грегуара .- 7 bytes
- Изменен ввод функции с явного на неявный.Примечания
источник
(char c)
может быть простоc
R
169155 байтисточник
Dyalog APL, 125 байт
Попробуйте онлайн!
Как?
⍵∊⎕A
⍵
(длинная строка) с 1 для заглавных букв, 0 для строчных / пробелов.+\
Группа (возвращающие числа) ⍵ заглавными буквами.⎕A[...]
Прописная буква, обозначенная цифрой⍵/⍨⍞=
Группа, обозначенная этим номером{...}'...'
Установить⍵
на длинную строкуисточник
R,
131,126,123,112, 178 байтовСпасибо за @Mark за сохранение 5 + 8 + 3 байта
источник
Recursiva ,
130 119118 байтПопробуйте онлайн!
источник
C (gcc) , 168 байт
Попробуйте онлайн!
источник
PowerShell ,
136134 байтаПопробуйте онлайн!
Принимает
[char]
входной символ в нижнем регистре и выводит в нижнем регистре.-2 благодаря предложению AdmBorkBork
-split0
вместо-split','
.источник
0
в качестве разделителя, а затем-split0
сохранить кавычки.