Seit 2009 sind die Versionscodenamen von Android mit Süßwaren versehen. Android 1.5 ist Cupcake, Android 1.6 ist Donut, Android 2.0 ist Eclair, etc .. In der Tat sind die Versionsnamen alphabetisch!
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
In Ordnung:
Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jellybean, Kitkat, Lollipop, Marshmallow, Nougat, Oreo
Herausforderung
Schreiben Sie ein Programm / eine Funktion , die einen Buchstaben von C
bis annimmt O
und den entsprechenden Android-Versionscode ausgibt.
Spezifikationen
- Standard I / O - Regeln gelten .
- Standardlücken sind verboten .
- Sie können entweder die Eingabe in Kleinbuchstaben oder in Großbuchstaben oder sogar in beiden unterstützen.
- Die Ausgabe kann in Groß- / Kleinschreibung (
Cupcake
) oder in Kleinschreibung (eclair
) erfolgen.Ice cream sandwich
kann nach Belieben großgeschrieben werden. (Ich habe nicht erwartet, dass es so viel Verwirrung stiftet ...) - Bei dieser Herausforderung geht es nicht darum, den kürzesten Ansatz in allen Sprachen zu finden, sondern darum, den kürzesten Ansatz in jeder Sprache zu finden .
- Ihr Code wird in Bytes bewertet , normalerweise in der Codierung UTF-8, sofern nicht anders angegeben.
- Eingebaute Funktionen (Mathematica hat möglicherweise eins: P), die diese Sequenz berechnen, sind zulässig, es wird jedoch empfohlen, eine Lösung einzuschließen, die nicht auf einer eingebauten basiert.
- Erklärungen, auch für "praktische" Sprachen, sind erwünscht .
Testfälle
Dies sind Großbuchstaben und Titelbuchstaben.
Input Output
F Froyo
I Ice Cream Sandwich
J Jellybean
N Nougat
G Gingerbread
L Lollipop
In ein paar besseren Formaten:
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
und später.Antworten:
Kohle , 73 Bytes
Probieren Sie es online! I / O ist in Kleinbuchstaben. Basierend auf dieser ausführlichen Version . Erläuterung:
quelle
Bash + Core Utils
131128122117 Bytes.Das Skript ist als Base64 codiert, da es Sonderzeichen enthält.
Akzeptiert den Android-Codenamen als ersten Positionsparameter nur in Kleinbuchstaben . Gibt den vollständigen Codenamen auch in Kleinbuchstaben zurück .
Erklärung:
base32 $0
codiert den Skriptinhalt mit Base32 mit dem Standardzeilenumbruch von 76 Zeichen.tr 'A-Z47\n' 'a-z\n '
(Beachten Sie, dass die\n
als Literal Neue - Zeile geschrieben wird) , wird die Eingabe in Kleinbuchstaben und ersetzen 4 , 7 und\n
durch\n
, Raum und Platz sind.grep ^$1
gibt die Zeilen aus, die mit der Zeichenfolge übereinstimmen, die als erstes Argument für das Skript angegeben wurde.Binärdaten
Dieser Oktett-Stream wurde gefälscht, damit er keine Zeilenumbrüche enthält. Wenn er gemäß RFC 4648 mit Base32 decodiert wird, ist die resultierende Zeichenfolge die Liste der Android-Codenamen (wobei 4 als Elementtrennzeichen und 7 als Leerzeichen verwendet werden). Unter seinen Besonderheiten beginnt es mit einem Newline-Zeichen und einem Hash (
#
), so dass es sich als Kommentar verhält und daher vom Interpreter nicht ausgeführt wird.Außerdem half mir der Standardzeilenumbruch auf 76 Zeichen dieser Base32-Implementierung, als ich die Elemente neu anordnete, um den Zeilenumbruch als eines der Ice Cream Sandwich- Leerzeichen zu verwenden.
Auch und ein wenig vom Thema geht, denke ich , dass Google sollte nicht
indirekten kommerziellen Produkten im Android Kodenamen werben.quelle
f
es gibt zwei Zeilen aus: eine mitfroyo
und eine mit mysteriösenfgeyltmuzteibno
.Python 3 , 139 Bytes
Probieren Sie es online!
quelle
Bash + Core Utils (Grep):
132130 BytesSo einfach könnte es sein
quelle
dd
ist clever, aber können Sie sie als Skript speichern und$1
stattdessen verwenden?Jelly , 57 Bytes
Probieren Sie es online!
-5 Danke an Jonathan Allan .
quelle
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 liegt daran, dass ich als Zeichenfolge keine ZeichenfolgeC ++,
206201198 BytesVielen Dank an @sergiol für das Sparen von 3 Bytes!
Probieren Sie es online!
C 173 Bytes
Nun, es hat als C ++ begonnen, aber jetzt ist es auch als C gültig, und einige Bytes können gespeichert werden, indem es als C kompiliert wird.
Probieren Sie es online!
quelle
#import
in c ++? was vermisse ich hier#import <cstdio>
da das Fehlen von#include <stdio.h>
; oder vielleicht irre ich michJavaScript (ES6),
137136 Bytes1 Byte dank Neil gespeichert
Demo
Code-Snippet anzeigen
quelle
([a-z]| .)+
(1 Byte sparen) sogar mit Ice Cream Sandwich in der Mitte der Zeichenfolge funktionieren würde (es würde fehlschlagen, wenn die Codenamen S erreichen obwohl).[a-z\s]+
stimmt nicht mit Großbuchstaben überein. Ich weiß nur nicht, ob Sie das in JS tun könnenIce cream sandwich
, wie im Testfall (obwohl dies nicht Titel Fall ist)Japt ,
8179 BytesEnthält einige Zeichen, die hier nicht angezeigt werden.
Probier es aus
Erläuterung
Implizite Eingabe von Großbuchstaben
U
.Ein komprimierter String (alles zwischen den Backticks) der Namen, getrennt mit
f
und ohne Anfangsbuchstaben, wirdq
in ein Array aufgeteilt ( )f
.Innerhalb dieses Arrays erhalten wir das Element am Index (
g
) desU
Zeichencodes. (Ja, Index Wrapping!)Wir hängen das an
U
den resultierenden String an und geben ihn implizit aus.quelle
f
stattdessen bei Zeilenumbrüchen aufteilen: ethproductions.github.io/japt/…Excel VBA,
137134132 BytesAnonymous VBE Direkt - Fenster - Funktion , die Eingabe als erwartet dauert Typ
Variant\String
und Länge1
, die eine Kapital Schreiben von Zelle[A1]
und gibt an die VBE unmittelbaren Fensterfunktion-5 Bytes für die Räume in wechselnden
ce cream sandwich
von(char 32) bis
(char 160)`` (char 127) und in den Trennzeichen Komma EntfernenSplit
Funktionquelle
SOGL V0.12 , 81 Bytes
Probieren Sie es hier aus!
Erläuterung:
Jetzt gibt es eine kürzere 80-Byte- Version, aber ich habe die integrierten + 2 / -2-Funktionen aufgrund dieser Herausforderung hinzugefügt: p
Die komprimierte Zeichenfolge ist wie
"cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"
für die maximale Verwendung von englischen Wörtern aufgeteilt (viele waren nicht im SOGL-Wörterbuch). Im Moment kann ich keine Verbesserungen finden.quelle
> <> , 181 Bytes
Probieren Sie es online!
Dies funktioniert, indem das Programm selbstmodifiziert wird, um einen
<
vor den richtigen zu druckenden Namen zu setzen, dessen Position durch den Wert des eingegebenen Buchstabens bestimmt wird.quelle
Dyalog APL,
158143131 Bytes1 Byte gespeichert dank @ Zacharý
Dank @Gil werden 12 Bytes gespart
Probieren Sie es online!
Wie?
',,,upcake...'
- Liste der Wörter','(1↓¨=⊂⊢)
- geteilt durch','
(⎕A⍳⍵)⊃
- Nehmen Sie von der Stelle des Arguments im Alphabet⍵,
- und an den Brief anhängenquelle
↑
als platt beschrieben?{⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}
für 1 Byte weniger!∊
wird zwar auch abgeflacht, aber eigentlich abgeflacht und nicht "abgemischt".↑(1 2)(3 4)
ist NICHT flach, während∊(1 2)(3 4)
ist.EXCEL, 154 Bytes
quelle
C (GCC) ,
195192190 Bytes-2 Bytes dank @Quentin
Probieren Sie es online!
quelle
Tcl , 158 Bytes
Probieren Sie es online!
quelle
Haskell, 145 Bytes
quelle
takeWhile
kannfst.span
unddropWhile
dementsprechend seinsnd.span
.Gaia , 110 Bytes
Probieren Sie es online!
Erläuterung
quelle
Ruby, 127 Bytes
Übernimmt die Eingabe in Großbuchstaben. Probieren Sie es online!
quelle
Pyth ,
117116 BytesPort meiner Python-Antwort .
Probieren Sie es hier aus! oder Schauen Sie sich die Test Suite an
Pyth , 99 Bytes (70 Zeichen)
-15 Bytes dank @insert_name_here !
Probieren Sie es hier aus!
quelle
Java (OpenJDK 8) , 128 Byte
Probieren Sie es online!
Regex verwenden, 149 Bytes
Probieren Sie es online!
quelle
.split
Ich wollte die gleiche Antwort posten (nur mit einem anderen Trennzeichen), als ich die Aufforderung gelesen habe und konnte keine Java-Antwort finden (bis ich zur zweiten Seite mit den Antworten ging), also +1. Wie für die Regex-Antwort,([a-z]| .)+
kann sein[a-z ]+
, da Sie "Ice Cream Sandwich" ausgeben dürfen (" Die Ausgabe kann in Titel (Cupcake) oder ganz in Kleinbuchstaben (Eclair) erfolgen. Ice Cream Sandwich kann groß geschrieben werden, wie Sie möchten. (Ich habe nicht erwartet, dass es so viel VerwirrungKubisch ,
1047852830 BytesFunktionen helfen sicher, große Programme Golf ...
Probieren Sie es online! Dies sind 830 Bytes in Cubicals SBCS .
~
Liest Eingaben,@
druckt sie. (Dies bricht ab, wenn die Eingabe ungültig ist.)+.../...+...=7?6{...}
vergleicht den Eingang zu jedem ASCII - Wert (C
,D
,E
,F
, usw.) und führt den Code innerhalb{...}
wenn sie gleich sind.{...}
) gibt den Rest des Namens aus (das erste Zeichen ist bereits gedruckt).Dank des ASCII-zu-Kubik-Übersetzers von TehPers, der sehr hilfreich war.
quelle
V , 125 Bytes
Probieren Sie es online!
quelle
Pyke , 117 Bytes
Port meiner Python-Antwort .
Probieren Sie es hier aus!
Als Hex-Codes kodiert, die neue Golftechnik in Pyke, wären es 116 Bytes :
(Einfügen und überprüfen
Use hex encoding?
).quelle
C # ,
147136129 BytesDaten
Char
c
Der erste Buchstabe des VersionsnamensString
Der vollständige Name der VersionGolf gespielt
Ungolfed
Ungolfed lesbar
Vollständiger Code
Releases
147 bytes
- Anfangslösung.-11 bytes
- Entliehene Idee von Olivier Grégoire .- 7 bytes
- Die Funktionseingabe wurde von explizit in implizit geändert.Anmerkungen
quelle
(char c)
kann nur seinc
R,
169.155Bytesquelle
Dyalog APL, 125 Bytes
Probieren Sie es online!
Wie?
⍵∊⎕A
⍵
(die lange Zeichenkette) mit 1 für Großbuchstaben, 0 für Kleinbuchstaben / Leerzeichen.+\
Gruppe (Rückgabe von Zahlen) ⍵ in Großbuchstaben.⎕A[...]
Der Großbuchstabe wird durch eine Zahl gekennzeichnet⍵/⍨⍞=
Die Gruppe, die durch diese Nummer gekennzeichnet ist{...}'...'
Auf⍵
die lange Zeichenfolge setzenquelle
R,
131,126,123,112, 178 BytesVielen Dank für @Mark für das Speichern von 5 + 8 + 3 Bytes
quelle
Rekursiv ,
130 119118 BytesProbieren Sie es online!
quelle
C (gcc) 168 Bytes
Probieren Sie es online!
quelle
PowerShell ,
136134 ByteProbieren Sie es online!
Nimmt ein
[char]
Eingabezeichen in Kleinbuchstaben und gibt es in Kleinbuchstaben aus.-2 dank des Vorschlags von AdmBorkBork an
-split0
statt-split','
.quelle
0
als Trennzeichen verwenden und dann-split0
die Anführungszeichen speichern.