Desde 2009, los nombres de los códigos de la versión de Android tienen temas de confitería. Android 1.5 es Cupcake, Android 1.6 es Donut, Android 2.0 es Eclair, etc. De hecho, ¡los nombres de las versiones son alfabéticos!
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
En orden:
Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jellybean, Kitkat, Lollipop, Marshmallow, Nougat, Oreo
Desafío
Escribir un programa / función que toma una carta de C
a O
y da salida a su respectivo nombre de código de la versión de Android.
Especificaciones
- Normas estándar de E / S se aplican .
- Las lagunas estándar están prohibidas .
- Puede optar por admitir la entrada en minúscula o en mayúscula o incluso ambas.
- El resultado puede estar en mayúsculas
Cupcake
o minúsculas ( ) o en minúsculas (eclair
).Ice cream sandwich
puede escribirse en mayúsculas como quieras. (No esperaba que causara tanta confusión ...) - Este desafío no se trata de encontrar el enfoque más corto en todos los idiomas, sino de encontrar el enfoque más corto en cada idioma .
- Su código se puntuará en bytes , generalmente en la codificación UTF-8, a menos que se especifique lo contrario.
- Las funciones integradas (Mathematica podría tener una: P) que calculan esta secuencia están permitidas, pero se recomienda incluir una solución que no se base en una función integrada.
- Se alientan las explicaciones, incluso para los idiomas "prácticos" .
Casos de prueba
Estos son mayúsculas y mayúsculas.
Input Output
F Froyo
I Ice Cream Sandwich
J Jellybean
N Nougat
G Gingerbread
L Lollipop
En algunos formatos mejores:
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
y más tarde.Respuestas:
Carbón , 73 bytes
Pruébalo en línea! I / O está en minúsculas. Basado en esta versión detallada . Explicación:
fuente
Bash + Utilidades Core
131128122117 bytes.El script está codificado como Base64 porque contiene caracteres especiales (extraños).
Acepta la letra de nombre de código de Android solo en minúsculas como su primer parámetro posicional. Devuelve el nombre en clave completo también en minúsculas .
Explicación:
base32 $0
codifica el contenido del script con Base32, con el ajuste de línea predeterminado de 76 caracteres.tr 'A-Z47\n' 'a-z\n '
(tenga en cuenta que\n
se escribe como una nueva línea literal) en minúscula la entrada y reemplazará 4 , 7 y\n
by\n
, espacio y espacio respectivamente.grep ^$1
generará las líneas que coinciden con la cadena proporcionada como primer argumento para el script.Datos binarios
Esta secuencia de octetos se falsificó para que no contenga nuevas líneas y cuando se decodifica con Base32 según RFC 4648, la cadena resultante es la lista de nombres de código de Android (usando 4 como delimitador de elementos y 7 para reemplazar el carácter de espacio ). Entre sus peculiaridades, comienza con un carácter de nueva línea y un hash (
#
) para que se comporte como un comentario y, por lo tanto, no sea ejecutado por el intérprete.Además, el ajuste de línea predeterminado a 76 caracteres de esta implementación de Base32 me ayudó un byte, ya que reordené los elementos para usar el salto de línea como uno de los espacios de sándwich de helado .
También, y yendo un poco fuera de tema, creo que Google no debería
dehacer publicidad directa de productos comerciales en los nombres clave de Android.fuente
f
, genera dos líneas: una confroyo
y otra con misteriosofgeyltmuzteibno
.Python 3 , 139 bytes
Pruébalo en línea!
fuente
Bash + Core Utils (Grep):
132130 BytesTan simple como podría ser
fuente
dd
es inteligente, pero ¿podría guardarla como un script y usarla$1
en su lugar?Jalea , 57 bytes
Pruébalo en línea!
-5 gracias a Jonathan Allan .
fuente
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 es porque recibo una entrada como una cadena no charC ++,
206201198 bytes¡Gracias a @sergiol por ayudar a ahorrar 3 bytes!
Pruébalo en línea!
C, 173 bytes
Bueno, comenzó como C ++, pero ahora también es válido C, y algunos bytes se pueden guardar compilándolo como C.
Pruébalo en línea!
fuente
#import
en c ++? ¿que me estoy perdiendo aqui?#import <cstdio>
porque la falta de#include <stdio.h>
; o puede ser que me equivoqueJavaScript (ES6),
137136 bytesGuardado 1 byte gracias a Neil
Manifestación
Mostrar fragmento de código
fuente
([a-z]| .)+
(guardar 1 byte) funcionaría incluso con Ice Cream Sandwich en el medio de la cadena (comenzaría a fallar cuando los nombres de código llegaran a S aunque).[a-z\s]+
no coincide con letras mayúsculas. Simplemente no sé si puedes hacer eso en JSIce cream sandwich
, como en el caso de prueba (aunque este no es el caso del título)Japt ,
8179 bytesContiene algunos caracteres que no se mostrarán aquí.
Pruébalo
Explicación
Entrada implícita de cadena de caracteres en mayúscula
U
.Una cadena comprimida (todo entre las teclas de retroceso) de los nombres, separada con
f
y sin su primera letra se divide (q
) en una matrizf
.Dentro de esa matriz obtenemos el elemento en el índice (
g
) delU
código de caracteres s. (¡Sí, ajuste de índice!)Anexamos eso
U
e imprimimos implícitamente la cadena resultante.fuente
f
su lugar si los saltos de línea: ethproductions.github.io/japt/...Excel VBA,
137134132 BytesFunción de ventana inmediata Anónimo VBE que toma la entrada como tipo esperado
Variant\String
y duración de1
la celebración de un capital de carta de celular[A1]
y salidas de la función de ventana inmediata VBE-5 bytes para cambiar los espacios
ce cream sandwich
de(char 32) a
(char 160)`` (char 127) y eliminar el delimitador de coma en laSplit
funciónfuente
SOGL V0.12 , 81 bytes
Pruébalo aquí!
Explicación:
Ahora hay una versión más corta de 80 bytes , pero agregué los + 2 / -2 incorporados debido a este desafío: p
La cadena comprimida se divide como
"cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"
para el uso máximo de palabras en inglés (muchas no estaban en el diccionario SOGL), en este momento no puedo encontrar ninguna mejora.fuente
> <> , 181 bytes
Pruébalo en línea!
Esto funciona modificando automáticamente el programa para colocar un
<
frente al nombre correcto para imprimir, cuya posición está determinada por el valor de la letra ingresada.fuente
Dyalog APL,
158143131 bytes1 byte guardado gracias a @ Zacharý
12 bytes guardados gracias a @Gil
Pruébalo en línea!
¿Cómo?
',,,upcake...'
- lista de palabras','(1↓¨=⊂⊢)
- dividido por','
(⎕A⍳⍵)⊃
- tomar del lugar del argumento en el alfabeto⍵,
- y anexar a la cartafuente
↑
como aplanar?{⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}
funciona por 1 byte menos!∊
se aplana, pero en realidad se aplana y no se "mezcla".↑(1 2)(3 4)
NO es plano, mientras que∊(1 2)(3 4)
es.EXCEL, 154 bytes
fuente
C (gcc) ,
195192190 bytes-2 bytes gracias a @Quentin
Pruébalo en línea!
fuente
Tcl , 158 bytes
Pruébalo en línea!
fuente
Haskell, 145 bytes
fuente
takeWhile
puede serfst.span
y endropWhile
consecuenciasnd.span
.Gaia , 110 bytes
Pruébalo en línea!
Explicación
fuente
Rubí, 127 bytes
Toma entrada en mayúscula. Pruébalo en línea!
fuente
Pyth ,
117116 bytesPuerto de mi respuesta de Python .
Pruébalo aquí! o echa un vistazo a Test Suite
Pyth , 99 bytes (70 caracteres)
-15 bytes gracias a @insert_name_here !
Pruébalo aquí!
fuente
Java (OpenJDK 8) , 128 bytes
Pruébalo en línea!
Usando expresiones regulares, 149 bytes
Pruébalo en línea!
fuente
.split
respuesta (solo con un delimitador diferente) cuando leí el desafío y no pude encontrar una respuesta Java (hasta que fui a la segunda página de respuestas), entonces +1. En cuanto a la respuesta regex,([a-z]| .)+
puede serlo[a-z ]+
, ya que puede emitir "Sandwich de helado" (" El resultado puede estar en mayúsculas (Cupcake) o en minúsculas (eclair). El sándwich de helados puede escribirse en mayúsculas como desee. (No esperaba que causara tanta confusión ...) ")Cúbicamente ,
1047852830 bytesLas funciones seguramente ayudan a los grandes programas de golf ...
Pruébalo en línea! Esto es 830 bytes en SBCS de Cubically .
~
lee la entrada, la@
imprime. (Esto se rompe cuando la entrada no es válida).+.../...+...=7?6{...}
compara la entrada a cada valor ASCII (C
,D
,E
,F
, etc) y ejecuta el código dentro de{...}
si son iguales.{...}
) imprime el resto del nombre (el primer carácter ya está impreso).Gracias al traductor ASCII a Cubically de TehPers que fue muy útil.
fuente
V , 125 bytes
Pruébalo en línea!
fuente
Pyke , 117 bytes
Puerto de mi respuesta de Python .
Pruébalo aquí!
Codificado como códigos hexadecimales, la nueva técnica de golf en Pyke, sería de 116 bytes :
(Pegar y verificar
Use hex encoding?
).fuente
C # ,
147136129 bytesDatos
Char
c
La primera letra del nombre de la versiónString
El nombre completo de la versiónGolfed
Sin golf
Legible sin golf
Código completo
Lanzamientos
147 bytes
- Solución inicial.-11 bytes
- Prestó la idea de Olivier Grégoire .- 7 bytes
- Cambió la entrada de la función de explícito a implícito.Notas
fuente
(char c)
puede serc
R,
169155bytesfuente
Dyalog APL, 125 bytes
Pruébalo en línea!
¿Cómo?
⍵∊⎕A
⍵
(la cadena larga) con 1 para mayúsculas, 0 para minúsculas / espacios.+\
Agrupe (números de retorno) ⍵ por letras mayúsculas.⎕A[...]
La letra mayúscula significada por un número⍵/⍨⍞=
El grupo indicado por ese número{...}'...'
Establecer⍵
en la cadena largafuente
R,
131,126,123,112, 178 bytesGracias por @Mark por guardar 5 + 8 + 3 bytes
fuente
Recursiva ,
130 119118 bytesPruébalo en línea!
fuente
C (gcc) , 168 bytes
Pruébalo en línea!
fuente
PowerShell ,
136134bytesPruébalo en línea!
Toma un
[char]
carácter de entrada, en minúsculas, y las salidas en minúsculas.-2 gracias a la sugerencia de AdmBorkBork de en
-split0
lugar de-split','
.fuente
0
como separador y luego-split0
guardar las comillas.