Dans l'un de nos projets à l'œuvre, nous avons récemment découvert une méthode particulièrement importante pour générer une chaîne de 6 caractères à partir d'un alphabet de 15 caractères. Quelques-uns d'entre nous ont affirmé "Je parie que nous pouvons obtenir cela en une seule ligne", ce qui a commencé un petit jeu interne de code golf.
Votre tâche est de nous battre, ce qui sans doute ne tardera pas!
L'algorithme d'origine utilisait l'alphabet 0-9A-E, mais nous avons expérimenté d'autres alphabets. Il y a donc trois sous-tâches.
- Générez une
6
chaîne de caractères en sélectionnant de manière aléatoire à partir d'un15
alphabet de caractères codés en dur arbitraire commeABC123!@TPOI098
. (Ceci n'est qu'un exemple et devrait être personnalisable sans affecter le nombre d'octets.) - Générez une
6
chaîne de caractères en sélectionnant au hasard dans un15
alphabet de caractères0123456789ABCDE
. - Générez une
6
chaîne de caractères en sélectionnant au hasard dans un15
alphabet de caractères de votre choix (caractères imprimables uniquement s'il vous plaît).
Chaque personnage devrait avoir une chance égale de sélection et la répétition devrait être possible.
Le mieux que nous ayons pu gérer pour chacune des sous-tâches est:
- "ABC123! @ TPOI098" -
24 bytes
- "0123456789ABCDE" -
21 bytes
- Alphabet personnalisé -
13 bytes
Votre score est la somme des octets dans la solution de chaque sous-tâche. c'est-à-dire que notre score est actuellement de 58.
Nous avons essayé d'utiliser entre autres CJam et Ruby. L'original était en C #. Utilisez n'importe quelle langue que vous aimez, mais nous serons intéressés de voir des solutions dans ces langues en particulier
la source
Réponses:
Gelée , 38 octets
Liens TryItOnline A , B et C .
A :
ABC123!@£POI098
, 22 octets(penser à une compression pour diminuer celle-ci)
B :
0123456789ABCDE
, 8 octets:C :
123456789ABCDEF
(choix), 8 octets:Comment?
la source
CJam (23 + 14 + 10 = 47 octets)
Alphabet arbitraire: 23 octets ( démo en ligne )
Alphabet hexadécimal: 14 octets ( démo en ligne )
Alphabet personnalisé:,
ABCDEFGHIJKLMNO
10 octets ( démo en ligne )Dissection
L'héxadécimal est l'intéressant:
Les six caractères sont laissés sur la pile et imprimés automatiquement.
la source
AbHb
est génial. J'ai pensé à cette approche générale mais_9>7*+
c'était trop long.Perl, 46 + 26 + 26 = 98 octets
Une grande partie du mérite revient à @Dom Hastings pour avoir économisé 13 octets!
Les 3 programmes sont à peu près identiques, à l'exception de l'alphabet qui change.
Alphabet codé en dur (
ABC123!@)POI098
dans cet exemple) -> 46 octets:say map{substr"ABC123!@)POI098",15*rand,1}1..6
Alphabet fixe
0123456789ABCDE
-> 26 octets:printf"%X",rand 15for 1..6
Alphabet personnalisé
0123456789ABCDE
dans ce cas -> 26 octets:printf"%X",rand 15for 1..6
Vous pouvez les mettre tous dans un fichier pour les exécuter:
(les
say "";
sont juste là pour améliorer le format de sortie)la source
say
:say map{("ABC123!@)POI098"=~/./g)[rand 15]}1..6
etsay map{(A..O)[rand 15]}1..6
. Pour la seconde, vous pouvez utiliserprintf
:printf"%X",rand 15for 1..6
pour économiser 11 sur l'ensemble! Je suis sûr que Ton peut vous conseiller sur la magie des arcanes pour économiser plus aussi!substr
enregistre un autre:say map{substr"ABC123!@)POI098",15*rand,1}1..6
printf"%X"
,substr..rand
etmap
, c'est juste un peu moins évident, donc je laisse les gens profiter de la magie de perl sans spoilers! : DR, 33 + 43 + 59 = 135 octets
Alphabet codé en dur arbitraire (changez la chaîne pour changer l'alphabet):
Alphabet de
[0-9A-E]
:Alphabet défini par l'utilisateur de stdin:
Tous les cas impriment le mot de sortie sur stdout.
la source
JavaScript (ES6),
167166164163 octets1 octet enregistré grâce à Neil
2 octets enregistrés grâce à ETHproductions
1 octet enregistré grâce à premek.v
Hardcoded:
"ABC123!@TPOI098"
(58 octets)Corrigé:
"0123456789ABCDE"
(5857 octets)Personnalisé:
"()+.1=>?M[afhnt"
(514948 octets)la source
(n=6)=>n?f(n-1)+("ABCDE"[n=Math.random()*15|0]||n-5):''
vous fait gagner un octet.1/8+Math
est génial :).1+JSON
c'est mieux;)JSON+f
([object JSON](n
=>" (JNOS[]bcejnot"
)JavaScript (ES6), 184 octets
Alphabet personnalisé: 66 octets
0-9A-E: 63 octets
0-9a-e: 55 octets
(Soustrayez 6 octets si le caractère aléatoire basé sur la date est autorisé.)
la source
**
:_=>((Math.random()+1)*15**6|0).toString(15).slice(1)
f=
dans le nombre d'octetsq, 42 octets
UNE
19 octets
B
14 octets
C
9 octets
(utilise les quinze premières lettres de l'alphabet)
la source
Julia (36 + 26 + 21 = 83)
la source
CJam, 48 octets
Alphabet arbitraire, 23 octets:
Essayez-le en ligne!
Chiffres hexadécimaux, 15 octets:
Essayez-le en ligne!
Alphabet
ABCDEFGHIJKLMNO
, 10 octets:Essayez-le en ligne!
la source
~c
au lieu de'A+
renvoie quelque chose de techniquement imprimable.Rubis 47 + 37 + 31 = 115
Hardcoded: "ABC123! @ TPOI098" (47)
Correction: "0123456789ABCDE" (37)
Personnalisé: "ABCDEFGHIJKLMNO" (31)
la source
05AB1E , 43 octets
Alphabet arbitraire (
ABC123!@TPOI098
), 23 octets Essayez-le en ligneAlphabet presque hexadécimal (
0123456789ABCDE
), 10 octets Essayez-le en ligneAlphabet personnalisé (
abcdefghijklmno
), 10 octets Essayez-le en lignela source
Python 2, 70 + 70 + 64 = 204 octets
Malheureusement, le deuxième exemple est plus facile avec la première méthode que quelque chose comme
choice([randint(48,57)),choice(65,69)])
la source
from random import*
? Je pense que vous pouvez utiliserimport random
etrandom.choice
au moins dans les deux premiers exemples.import random random.choice
a 27 ans mais afrom random import* choice
26 ans,import random as r r.choice
27 ans égalementformat(randrange(8**8),'X')
, je pense.F
Vitsy, 27 +
2422 +1310 =646259 octets#1:
Essayez-le en ligne!
# 2:
Essayez-le en ligne!
# 3:
Où sont les personnages disponibles:
Essayez-le en ligne!
la source
J, 24 + 24 +
1810 = 58 octets8 octets économisés grâce aux miles!
Oui, la deuxième chaîne n'est pas facilement compressible en J:
Si un alphabet hexadécimal en minuscule convient, alors il y en a
,hfd?6#15
pour 9 octets, comme l'a noté @miles.Quoi qu'il en soit,
?6#15
est 6 nombres aléatoires entre 0 et 15;{~
est à prendre.u:
convertit les nombres en caractères. Le dernier exemple codeABCDEFGHIJKLMNOP
.Bonus: cas général
{~6?@##
est à peu près:la source
hfd
qui se transforme en h ex f rom d ecimal. Vous pouvez obtenir une solution de 9 octets en utilisant,hfd?6#15
. Le dernier cas, juste pour avoir quelque chose de facile à lire, utilise l'alphabet de'A'
pour une solution de 10 octetsu:65+?6#15
, soit un total de 24 + 9 + 10 = 45.PHP, 46 + 36 + 35 = 117 octets
Hardcoded (46 octets)
(47 octets)Hexadécimal (minuscule) (36 octets)
Pour les majuscules, 46 octets avec la version codée en dur.
Personnalisé (AO) (35 octets)
la source
Scala, 154 octets
Alphabet codé en dur (54 octets):
Alphabet hexadécimal (54 octets):
Alphabet personnalisé
ABCDEFGHIJKLMNO
(47 octets):Explication:
'A'to'O'
crée une séquence de 15 caractères, de A à Ola source
Pip , 42 octets
Alphabet codé en dur, 22 octets:
Chiffres hexadécimaux, 11 octets:
15 premières lettres minuscules, 9 octets:
Explication
Les trois programmes commencent par
L6O
: boucle 6 fois et produisent l'expression donnée.RC"..."
: Choix aléatoire d'un caractère dans la chaîne codée en durRR15TB16
: RandRange (15), converti en base 16z@RR15
: alphabet minusculez
, indexé avec RandRange (15)Essayez-le en ligne!
la source
Skript / skQuery , 108 octets
Hardcoded (43 octets):
0123456789ABCDE (34 octets):
Choix (31 octets):
la source
`
vers la gauche?Jolf, 26 + 14 + 13 = 51 octets
Alphabet personnalisé, 24 octets. Essayez-le ici!
Alphabet 0-9A-E, 14 octets. Essayez-le ici!
lp^0wά
estlp
(0-Z) tranché (l
) de0
à15
(wά
).Alphabet 1-9A-F, 13 octets. Essayez-le ici!
lp^1ά
est le même que ci-dessus, sauf1
à16
.Méthode générale:
Autres tentatives (en utilisant la compression de chaînes):
la source
PowerShell v2 +, 45 + 44 + 37 = 126 octets
Alphabet fixe, 45 octets
Alphabet presque hexadécimal, 44 octets
Alphabet personnalisé (A à O), 37 octets
Tous ces éléments suivent le même modèle - boucle de
0
à5
, chaque itération sélectionne unRandom
caractère ou une valeur ASCII, lechar
transforme en tableau si nécessaire, et l'-join
intègre ensemble dans une chaîne. Cette chaîne est laissée sur le pipeline et la sortie est implicite.Exemples
la source
Pyke, 35 octets
Alphabet arbitraire, 20 octets
Essayez-le ici!
Alphabet hexadécimal, 8 octets
Essayez-le ici!
Alphabet personnalisé, 7 octets
Essayez-le ici!
Alphabet choisi:
abcdefghijklmno
la source