Desde 2009, os nomes de código das versões do Android têm o tema de confeitaria. Android 1.5 é Cupcake, Android 1.6 é Donut, Android 2.0 é Eclair, etc. Na verdade, os nomes das versões são em ordem alfabética!
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
Em ordem:
Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jellybean, Kitkat, Lollipop, Marshmallow, Nougat, Oreo
Desafio
Escreva um programa / função que leve uma carta de C
paraO
e envia o seu respectivo nome de código da versão Android.
Especificações
- Aplicam- se as regras de E / S padrão .
- As brechas padrão são proibidas .
- Você pode optar por oferecer suporte a entrada em minúsculas ou maiúsculas ou mesmo a ambos.
- A saída pode estar em maiúsculas (
Cupcake
) ou em minúsculas (eclair
).Ice cream sandwich
pode ser capitalizado da maneira que desejar. (Eu não esperava que causasse tanta confusão ...) - Esse desafio não é encontrar a abordagem mais curta em todos os idiomas, mas sim encontrar a abordagem mais curta em cada idioma. .
- Seu código será pontuado em bytes , geralmente na codificação UTF-8, a menos que especificado de outra forma.
- Funções internas (o Mathematica pode ter uma: P) que calculam essa sequência são permitidas, mas é recomendável incluir uma solução que não dependa de uma embutida.
- Explicações, mesmo para idiomas "práticos", são incentivadas .
Casos de teste
São maiúsculas e maiúsculas.
Input Output
F Froyo
I Ice Cream Sandwich
J Jellybean
N Nougat
G Gingerbread
L Lollipop
Em alguns formatos melhores:
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
e mais tarde.Respostas:
Carvão , 73 bytes
Experimente online! E / S está em minúsculas. Com base nesta versão detalhada . Explicação:
fonte
Utilitários Bash + Core
131128122117 bytes.O script é codificado como Base64 porque contém caracteres especiais (estranhos).
Aceita a letra do codinome Android apenas em minúsculas como seu primeiro parâmetro posicional. Retorna o nome de código completo também em minúsculas .
Explicação:
base32 $0
codifica o conteúdo do script com Base32, com a quebra de linha padrão de 76 caracteres.tr 'A-Z47\n' 'a-z\n '
(observe que\n
está escrito como uma nova linha literal) irá minúscula a entrada e substituirá 4 , 7 e\n
por\n
, espaço e espaço respectivamente.grep ^$1
produzirá as linhas correspondentes à sequência fornecida como primeiro argumento para o script.Dados binários
Esse fluxo de octetos foi forjado para não conter novas linhas e quando é decodificado com Base32 conforme RFC 4648, a sequência resultante é a lista de codinomes do Android (usando 4 como delimitador de item e 7 para substituir o caractere de espaço ). Entre suas peculiaridades, começa com um caractere de nova linha e um hash (
#
), por isso se comporta como um comentário e, portanto, não é executado pelo intérprete.Além disso, a quebra de linha padrão com 76 caracteres dessa implementação da Base32 me ajudou em um byte, conforme reordenei os itens para usar a quebra de linha como um dos espaços de sanduíche de sorvete .
Além disso, e indo um pouco off-topic, eu acho que o Google não deve
emanunciar diretamente produtos comerciais nos codinomes Android.fonte
f
, ele produz duas linhas: uma comfroyo
e outra com misteriosofgeyltmuzteibno
.Python 3 , 139 bytes
Experimente online!
fonte
Bash + Core Utils (Grep):
132130 bytesSimples como poderia ser
fonte
dd
é inteligente, mas você poderia salvar como um script e usar$1
?Geléia , 57 bytes
Experimente online!
-5 graças a Jonathan Allan .
fonte
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 que é porque eu começar a entrada como uma string não caractereC ++,
206201198 bytesAgradecemos a @sergiol por ajudar a economizar 3 bytes!
Experimente online!
C, 173 bytes
Bem, ele começou como C ++, mas agora também é C válido e alguns bytes podem ser salvos compilando-o como C.
Experimente online!
fonte
#import
em c ++? O que estou perdendo aqui?#import <cstdio>
por falta de#include <stdio.h>
; ou pode estar erradoJavaScript (ES6),
137136 bytesGuardado 1 byte graças a Neil
Demo
Mostrar snippet de código
fonte
([a-z]| .)+
(economizando 1 byte) funcione mesmo com o Ice Cream Sandwich no meio da string (ele começará a falhar quando os nomes dos códigos chegarem a S Apesar).[a-z\s]+
não corresponde a letras maiúsculas. Eu só não sei se você pode fazer isso em JSIce cream sandwich
, como no caso de teste (embora este não é maiúscula)Japonês ,
8179 bytesContém alguns caracteres que não serão exibidos aqui.
Teste-o
Explicação
Entrada implícita da cadeia de caracteres em maiúsculas
U
.Uma string compactada (tudo entre os backticks) dos nomes, separados por
f
e sem a primeira letra, é dividida (q
) em uma matrizf
.Dentro desse array, obtemos o elemento no index (
g
) doU
código de caractere s. (Yay, quebra de índice!)Anexamos isso
U
e produzimos implicitamente a string resultante.fonte
f
vez disso, se houver novas linhas: ethproductions.github.io/japt/… #Excel VBA,
137134132 bytesFunção de janela imediata VBE anônima que recebe entrada como tipo
Variant\String
e comprimento esperados,1
mantendo uma letra maiúscula da célula[A1]
e sai para a função de janela imediata VBE-5 Bytes para alterar os espaços
ce cream sandwich
de(caractere 32) para
(caractere 160)`` (caractere 127) e remover o delimitador de vírgula naSplit
funçãofonte
SOGL V0.12 , 81 bytes
Experimente aqui!
Explicação:
Agora há uma versão mais curta de 80 bytes , mas adicionei os + 2 / -2 internos por causa deste desafio: p
A string compactada é dividida como
"cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"
para uso máximo de palavras em inglês (muitas não estavam no dicionário SOGLs), no momento não consigo encontrar nenhuma melhoria.fonte
> <> , 181 bytes
Experimente online!
Isso funciona modificando o programa automaticamente para colocar um
<
na frente do nome correto a ser impresso, cuja posição é determinada pelo valor da letra inserida.fonte
Dyalog APL,
158143131 bytes1 byte salvo graças a @ Zacharý
12 bytes salvos graças a @Gil
Experimente online!
Quão?
',,,upcake...'
- lista de palavras','(1↓¨=⊂⊢)
- dividido por','
(⎕A⍳⍵)⊃
- tire do lugar do argumento no alfabeto⍵,
- e acrescente à cartafonte
↑
como achatar?{⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}
funciona por 1 byte a menos!∊
é achatado também, mas na verdade achatado e não "misturado".↑(1 2)(3 4)
NÃO é plano, enquanto∊(1 2)(3 4)
é.EXCEL, 154 bytes
fonte
C (gcc) ,
195192190 bytes-2 bytes graças a @Quentin
Experimente online!
fonte
Tcl , 158 bytes
Experimente online!
fonte
Haskell, 145 bytes
fonte
takeWhile
pode serfst.span
e dedropWhile
acordosnd.span
.Gaia , 110 bytes
Experimente online!
Explicação
fonte
Ruby, 127 bytes
Recebe entrada em maiúsculas. Experimente online!
fonte
Pitão ,
117116 bytesPorta da minha resposta Python .
Experimente aqui! ou Confira o Conjunto de Testes
Pitão , 99 bytes (70 caracteres)
-15 bytes graças a @inserir_name_here !
Experimente aqui!
fonte
Java (OpenJDK 8) , 128 bytes
Experimente online!
Usando regexes, 149 bytes
Experimente online!
fonte
.split
resposta (apenas com delimitador diferente) quando li o desafio e não consegui encontrar uma resposta Java (até a segunda página de respostas), então +1. Quanto à resposta regex,([a-z]| .)+
pode ser[a-z ]+
, já que você tem permissão para produzir "Sanduíche de sorvete" (" A saída pode estar em maiúsculas (Cupcake) ou em letras minúsculas (eclair)). O sanduíche de sorvete pode ser maiúsculo do jeito que você quiser. (Eu não esperava que isso causasse tanta confusão ...) ")Cubicamente ,
1047852830 bytesAs funções certamente ajudam a golfe em grandes programas ...
Experimente online! São 830 bytes no SBCS do Cubically .
~
lê entrada,@
imprime. (Isso interrompe quando a entrada é inválida.)+.../...+...=7?6{...}
compara a entrada para cada valor ASCII (C
,D
,E
,F
, etc) e executa o código dentro{...}
se eles são iguais.{...}
) imprime o restante do nome (o primeiro caractere já está impresso).Obrigado ao tradutor ASCII to Cubically do TehPers, que foi muito útil.
fonte
V , 125 bytes
Experimente online!
fonte
Pyke , 117 bytes
Porta da minha resposta Python .
Experimente aqui!
Codificado como códigos hexadecimais, a nova técnica de golfe em Pyke, seria 116 bytes :
(Cole e verifique
Use hex encoding?
).fonte
C # ,
147136129 bytesDados
Char
c
A primeira letra do nome da versãoString
O nome completo da versãoGolfe
Ungolfed
Ungolfed legible
Código completo
Lançamentos
147 bytes
- Solução inicial.-11 bytes
- Emprestada a idéia de Olivier Grégoire .- 7 bytes
- Alterada a entrada da função de explícita para implícita.Notas
fonte
(char c)
pode apenas serc
R,
169155 bytesfonte
Dyalog APL, 125 bytes
Experimente online!
Quão?
⍵∊⎕A
⍵
(a cadeia longa) com 1 para letras maiúsculas, 0 para letras minúsculas / espaços.+\
Agrupe (retornando números) ⍵ por letras maiúsculas.⎕A[...]
A letra maiúscula representada por um número⍵/⍨⍞=
O grupo representado por esse número{...}'...'
Definido⍵
para a sequência longafonte
R,
131,126,123,112, 178 bytesObrigado pelo @Mark por salvar 5 + 8 + 3 bytes
fonte
Recursiva ,
130 119118 bytesExperimente online!
fonte
C (gcc) , 168 bytes
Experimente online!
fonte
PowerShell ,
136134 bytesExperimente online!
Pega um
[char]
caractere de entrada, em minúsculas, e produz em minúsculas.-2 graças à sugestão de AdmBorkBork para em
-split0
vez de-split','
.fonte
0
como separador e-split0
salvar as aspas.