Introduction:
Je pense que tout le monde sait ce qu'est une lampe à lave, mais au cas où ils ne le feraient pas:
Ce sont essentiellement des tubes en verre qui contiennent de la cire dans un liquide translucide. La partie inférieure est chauffée lorsque la lampe est allumée, provoquant un changement de densité et donc la cire flotte vers le haut. Quand il se refroidit, il retombe, provoquant l'effet que nous voyons ci-dessus.
Il faut généralement environ 45 à 60 minutes pour que la base de la lampe augmente à une température suffisamment élevée pour changer la cire solide en cire liquide (si la lampe est située dans une zone à température ambiante).
Défi:
Étant donné un entier positif n
indiquant le nombre de minutes qui se sont écoulées depuis que nous avons allumé la lampe à lave, affichez un état aléatoire de la lampe à lave sur la base d'entiers à cinq niveaux.
Pour ce défi, nous dirons que la lampe à lave contient au total 1000 unités de cire, et nous avons cinq niveaux où la cire peut être.
1) Si n
est inférieur à 45, la lampe à lave chauffe toujours, donc la sortie sera de quatre lignes vides avec 1000
en bas:
1000
2) Si n
est dans la plage, [45, 60)
la lampe à lave a suffisamment augmenté en température pour que la cire puisse se déplacer, mais pas encore très haut. La cire peut atteindre jusqu'au troisième niveau inclus.
3) Si n
c'est 60
ou plus, la cire peut être à l'un des cinq niveaux.
Donc, étant donné l'entier positif n
en entrée, nous afficherons un état aléatoire avec les trois règles ci-dessus à l'esprit.
Voici quelques exemples de sorties:
Sorties possibles pour tout ce n
qui est >= 45
:
523
106
371
913
87
Sorties possibles pour tout ce n
qui est >= 60
:
73
113
312
5
497
284
55
637
24
Sortie constante pour n
cela <= 44
(et sortie possible pour tout n
):
1000
Règles du défi:
- Il peut y avoir des lignes vides, même si le niveau supérieur n'est pas vide.
- Ce
0
n'est pas autorisé sur aucune ligne. Doit être vide à la place. - La sortie est quelque peu flexible. Vous êtes autorisé à générer une liste / un tableau de chaînes / objets au lieu d'un résultat délimité par une nouvelle ligne comme ci-dessus. La raison pour laquelle je dis des chaînes / objets est due à la règle ci-dessus. Une ligne vide doit être
""
,null
,[]
, etc., mais ne peut pas être0
ou un entier négatif (ne peut - il êtrefalse
) (Ie["", "", 913, "", 87]
pourn >= 45
). Vous êtes également autorisé à inverser la sortie (c'est-1000\n\n\n\n
à- dire au lieu de\n\n\n\n1000
ou à la[87, null, 913, null, null]
place de[null, null, 913, null, 87]
). - Les nombres doivent tous être des entiers. Il peut s'agir de décimales avec
0
comme valeur décimale, mais aucun des nombres ne doit avoir de chiffres décimaux et les nombres entiers doivent toujours correspondre exactement1000
. - Toutes les sorties aléatoires possibles basées sur
n
devraient avoir une chance non nulle de se produire. - Une nouvelle ligne de fin (il y a donc six lignes de sortie) est autorisée.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, fonctions / méthode avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
0
, un nombre négatif oufalse
.n < 60
?n < 45
seulement 1 niveau est rempli cependant ( en haut ou en bas en fonction de l'ordre de sortie dans), ce qui est1000
. Avec45 <= n < 60
trois des cinq et avecn >= 60
les cinq. Mais la sortie contiendra toujours cinq «lignes».Réponses:
MathGolf ,
2120 octetsEssayez-le en ligne!
Ceci est ma première réponse dans ma nouvelle langue. J'ai basé ma solution sur la solution 05AB1E d'Emigna, mais j'ai utilisé quelques fonctionnalités intéressantes de MathGolf pour la raccourcir un peu.
Explication
la source
Python 2 ,
117113108107106105 octetsEssayez-le en ligne!
Renvoie une liste inversée (en bas en premier)
Version inspirée de la réponse de stackoverflow dans les commentaires (les cas de figure sont plus probables):
Python 2 , 129 octets
Essayez-le en ligne!
la source
333
ou200
pour les 3 ou 5 parties respectivement. Je ne vois aucun pic / valeur aberrante vers0
ou1000
. Ou les chances pour ceux-ci sont-elles juste astronomiquement petites (mais toujours non nulles) par rapport aux entiers proches333
et200
?0
ou0-2
ou0-4
), et comptée. Les chances de ne pas entrer dans l'un ou l'autre sont là, mais très faibles.JavaScript (ES6), 78 octets
Renvoie un tableau inversé où les niveaux vides sont remplis d'un espace.
Essayez-le en ligne!
Commenté
la source
R ,
8584 octets-1 octet grâce à @Giuseppe
Essayez-le en ligne!
Explication (non golfée):
la source
NA
est autorisé en tant que ligne / élément vide, voici une solution de 77 octets ( essayez-le en ligne! ) Ou une solution de 80 octets ( essayez-le en ligne! ) Si les noms des éléments posent problèmeC (gcc) ,
131,116,90,89, 87 octetsEssayez-le en ligne!
Mise à jour : correction d'un bug dans l'original. Fusionné dans la fonction d'assistance, réduisant ainsi 15 octets supplémentaires.
Mise à jour 2 : -25 octets grâce à ErikF.
Mise à jour 3 : -1 octet grâce à plafondcat.
Degolf
la source
puts()
en combinant l'impression en un seulprintf()
et en plaçant la soustraction à la fin de la boucle. De plus, je pense que vous êtes autorisé à mettre l'srand()
initialisation dans l'appelant. Essayez-le en ligne!05AB1E ,
272625 octetsEnregistré un octet grâce à Adnan .
Un autre octet enregistré grâce à Kevin Cruijssen .
Essayez-le en ligne!
Explication
la source
5Å0
etǝ
, etε0Û
à la fin. J'ai essayé de trouver quelque chose de plus court, mais je ne peux pas. J'ai l'impression qu'il peut toujours être joué au golf, mais je ne le vois pas actuellement (peut-être qu'il ne peut pas et c'est juste un sentiment aléatoire).•A–•60в
est 1 octet de plus qu'au44 59‚
lieu de plus court. Etε0Û
remplacer le0
s par des chaînes vides semble également être le plus court possible, car0K
il supprime simplement les éléments 0 et0м
supprime tout chiffre0
dans tous les nombres.44 59‚
, mais je ne la trouve pas (•H|•2ô
c'est le même nombre). Ma solution précédente (également 27 octets) utilisait45
et60
qui est plus facile à générer de différentes manières, mais je pense que ce n'était pas valide car il produisait 1 , 3 ou 5 niveaux en fonction de l'entrée et pas toujours 5 .•H|•2ô
c'est en effet aussi une façon intelligente, n'y avait pas pensé. Et il devrait en effet sortir 5 lignes. J'ai bien vu votre réponse précédente et j'allais la commenter. Elle n'a produit qu'une seule lignen < 45
, mais vous l'avez supprimée. Heureux que vous ayez trouvé une autre solution de 27 octets. :)ŽH|2ô
c'est ce que vous cherchez?JavaScript (Node.js) ,
8786 octetsEssayez-le en ligne!
La solution de 83 octets (
(n/15-2|0)*s<4
) est réservée en premier car j'ai besoin de vérifier pour une plus granden
.MISE À JOUR: Oui, cela
(n/15-2|0)*s<4
n'a pas fonctionné parce que pour plus grand,n
carn
suffisamment grand, la somme ne parvient pas à atteindre 1000.la source
PHP, 92 octets
Exécuter en tant que pipe avec
-R
ou l' essayer en ligne .la source
Nettoyer , 215 octets
Essayez-le en ligne!
Donc , je l' ai finalement trouvé un chemin plus court pour obtenir une graine aléatoire que l' importation
System._Unsafe
,System.Time
et en utilisanttoInt(accUnsafe time)
...Et le garçon est - il vraiment dans l'esprit de codegolf - l' intégration d' un appel à C, en ignorant le type d'état mondial normalement utilisé pour assurer l'évaluation ordre de ces choses.
la source
Java (JDK 10) ,
121117113111 octetsEssayez-le en ligne!
Cela tend à mettre plus de cire près du sommet, mais il est théoriquement possible que tout arrangement juridique de cire apparaisse.
edit: 4 octets ont été enregistrés par @KevinCruijssen
En Java lisible par l'homme:
la source
Math.random()*(w+1)
peut êtreMath.random()*-~w
de -2 octets. Voici l'astuce pertinente comme référence pourquoi. . Bonne réponse! +1 de moi. EDIT: En fait, 2 octets supplémentaires peuvent être enregistrés en utilisantj
temporaire comme variable pourw+1
(car il sera de toute façon écrasé juste après dans l'impression) et utilisez à laj*=Math.random()
place de sorte que vous n'aurez pas besoin du transtypage en(int)
( 117 octets ).&i>2
condition n'est pas nécessairePowershell ,
188162 octetsEssayez-le en ligne!
-2 octets par @Kevin Cruijssen
-4 octets en supprimant le verbe optionnel
-20 octets en raccourcissant la boucle et en supprimant les espaces
la source
else{if($t-ne 1e3){Get-Random(1000-$t)}}
àelseif($t-ne 1e3){Get-Random(1000-$t)}
? Je vois que vous en avez utilisé unelseif
plus tôt dans votre code, cela devrait donc vous faire économiser 2 octets. De plus, peut-être des conseils pour jouer au golf à Powershell ou des conseils pour jouer au golf dans <toutes les langues> pourraient vous inspirer davantage? Profitez de votre séjour! :)Pascal (FPC) ,
192190 octetsEssayez-le en ligne!
Utilisation de la méthode d'emballage dans les bacs par TFeld . Imprime la première ligne du bas avec une nouvelle ligne de fin.
Il semble que FPC n'ait pas de problèmes avec
random(0)
, j'ai donc des ajouts inhabituels là-bas.Ma soumission originale, descendue à 209 octets:
Essayez-le en ligne!
la source
Fusain , 37 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Boucle deux fois, deux fois. Alternativement, je pourrais avoir un entier divisé l'index de boucle par 2 pour le même nombre d'octets.
Si l'indice extérieur plus un quinzième de la température est supérieur à trois ...
... puis poussez un entier aléatoire jusqu'à 1000 inclusivement - la somme jusqu'à présent. Malheureusement, Charcoal ne peut pas calculer la somme d'une liste vide, je dois donc remplacer la chaîne vide à la place.
Poussez le montant restant dans la liste.
Convertissez la liste en chaîne, mais utilisez la chaîne vide au lieu de zéro.
la source
Gelée , 28 octets
Un programme complet imprimant le résultat (à l'envers, comme cela a été autorisé).
Essayez-le en ligne! - ceci est modifié à utilisern > 59 une liste de dix15 5 tuples sont construits puis filtrés, parmi lesquels choisir)
7
plutôt queȷ
(1000) parce que la mise en œuvre est lente au goût du golf! (...pourComment?
la source
1000\n\n\n\n
à- dire au lieu de\n\n\n\n1000
ou[87, null, 913, null, null]
au lieu de[null, null, 913, null, 87]
). " Donc oui, vous êtes autorisé à utiliser la version 28 octets sans leṚ
.Brindille , 126 octets
C'était un défi vraiment amusant!
Ce code crée une macro qui doit être importée.
Pour l'importer, faites simplement ceci:
Cela devrait faire l'affaire.
Vous pouvez l'essayer sur https://twigfiddle.com/t4dfgy
Remarque : En raison de la suppression des espaces blancs de la page, j'ai été obligé d'ajouter un
-
à la fin de la ligne, pour prouver qu'il génère le nombre correct de lignes.Sur une installation régulière, vous ne verriez que les nouvelles lignes sans problème.
la source
Perl 6 , 62 octets
Essayez-le en ligne!
Un bloc de code anonyme qui prend une chaîne et renvoie une liste d'entiers, avec
Nil
ou une liste vide ([]
) à la place de0
s.Explication:
la source
PHP ,
113108999793 octetsEssayez-le en ligne!
-11 octets grâce à @titus
-9 octets car tout est une chaîne
la source
J ,
565554484340 octetsEssayez-le en ligne!
-3 octets grâce à FrownyFrog
Une autre méthode conceptuellement agréable qui est un peu plus longue mais garantit une distribution parfaitement uniforme sur toutes les possibilités, selon la méthode ici :
J , 53 octets
Essayez-le en ligne!
la source
$!.a:
juste{.
?PowerShell ,
11510598 octets-17 octets grâce à mazzy
Essayez-le en ligne!
Un golf de la charmante réponse d' Edwin . Si vous aimez ça, votez pour lui.
la source
Rubis ,
6255 octetsEssayez-le en ligne!
Les tests sont limités à 0-99 degrés, car les lampes à lave peuvent être dangereuses à des températures plus élevées:
la source
0
pour les lignes vides. Les lignes vides dans le tableau peuvent être n'importe quoi sauf pour0
,false
ou un nombre négatif. Il peut donc êtrenull
,""
,[]
, etc., mais pas0
. Vous ne savez pas si Ruby a des tableaux / listes d'objets afin que vous puissiez transformer les0
s en autre chose, mais sinon, vous devrez les imprimer au lieu de renvoyer un tableau / liste.