Ceci est mon premier concours de golf.
Qu'as tu besoin de faire
Construisez-moi, en un minimum d'octets, mon système de contrôle à distance AC. Ma chambre est trop froide en ce moment et il me manque ma télécommande.
Maintenant, je ne veux pas que vous le construisiez littéralement ou quoi que ce soit, simplement jouer au golf ceci:
Incrément de température lent, commençant à 40 degrés et se terminant à exactement 72 ° C. Le temps d'incrémentation doit toujours être de 500 millisecondes par incrément. Il peut attendre encore 500ms à la fin. Je préférerais que ça s'arrête cependant. L'incrément lui-même doit augmenter de deux à chaque fois, comme ma télécommande.
Vous ne devriez pas effacer l'écran. Vous devriez avoir de nouvelles lignes.
Ce qui devrait arriver
Exemple de sortie (tout ce qui est entre parenthèses ne devrait pas être sorti).
40
(wait 500 millis)
42
(wait 500 millis)
44
(..repeat until 72..)
72
(stop or wait 500ms)
N'oubliez pas que c'est mon premier golf, alors je m'excuse si c'est trop difficile à jouer. :(
Bonne chance, golfeurs!
Réponses:
Utilitaires Bash + Linux, 19
seq
génère la sortie numérique.pv
le limite à 2 lignes / sec.la source
-q
supprimée va à STDERR, donc je ne pense pas que vous en ayez besoin.Minecraft 1.9.0+,
204162 octets +5836282420 blocs =262240232186182 blytesCette solution est loupée et ne peut pas être vue entière dans un, ou même deux captures d'écran. Utilise deux erreurs et abuse deux autres caractéristiques du jeu
Cette solution utilise les mêmes principes que celle ci-dessous, à savoir un design plus compact de 4 blocs.
Abuse du fait que les blocs de commande en chaîne (blocs verts) ne peuvent pas être alimentés par redstone, uniquement par un simple extrait d'un bloc de commande d'impulsion (orange).
Abuse du fait que les pistons ont besoin de 0,30 seconde pour s’étirer complètement, et Redstone n’a besoin que de 0,10 seconde pour enregistrer un signal.
Abuse également un double problème pour désactiver le minuteur (TNT): le redstone situé à côté du minuteur (TNT) est non seulement alimenté, mais pense également que le TNT est un autre redstone et le met sous tension.
En plus de tous ces abus, le signal raccourcisseur (chose sous la TNT) est à usage unique , après il obtient alimenté il change de forme, ce qui permet de faire passer le signal à travers à la « incrémenteur » (bloc supérieure orange)
Un peu d'explication sur la fonctionnalité de ses différentes parties peut être vu dans les solutions plus anciennes (mais mieux dans celle ci-dessous). Vous pouvez également l' essayer hors ligne! (solution simplifiée incrémentée de 4, fonctionne uniquement dans 1.11+) en exécutant cette commande dans un bloc de commandes .
Ancienne solution, Minecraft 1.9.0+, 186 blytes:
Puisque TNT explose normalement après les versions 3.0 dans Minecraft, celle-ci doit être placée par un command (
/setblock
) avec un fusible spécifié. Utilise également une conception plus compacte pour supprimer le bloc de commande redondant (contenant 42 octets) et redstone par rapport aux versions antérieures. Je suis sûr que ça ne peut pas être plus bas ...Ancienne solution, Minecraft 1.9.0+, 232 blytes:
Oups, j'ai découvert ces anciennes solutions par incréments de 4 ...
Utilise la fonction de chaîne de blocs de commande 1.9 (élément de bloc vert) pour enregistrer des blocs. Utilise également un raccourcisseur de signal plus compact que dans les solutions plus anciennes
Même solution plus ancienne, Minecraft 1.7.0+, 240 blytes:
Utilise une minuterie plus compacte (TNT) que la première solution (ci-dessous).
La solution la plus ancienne, Minecraft 1.7.0+, 262 blytes:
C'est si long à cause de la façon dont Minecraft gère les variables:
Pour définir une variable (int):
scoreboard objectives add <variable> dummy
Pour définir une valeur sur une variable (chaque entité, y compris les joueurs, a sa propre valeur de variable):
scoreboard players set <entity> <variable> <value>
*
peut être utilisé<entity>
pour sélectionner toutes les entités et économiser des octets.seules des variables définies peuvent être utilisées
la valeur de la variable doit être définie sur un nombre et non sur une variable
Pour incrémenter var1 de var2:
scoreboard players operation <entity> var1 += <entity> var2
<entity>
doit être une seule entité, par exemple.@p
, ne pas*
Les captures d’écran sont de moi, sous licence double sous WTFPL et quelle licence SE décide d’utiliser aujourd’hui (actuellement
cc by-sa 3.0 with attribution required
) :-)la source
Vim,
24, 23 octets / frappesUn octet enregistré grâce à @Kritixi Lithos!
Écrit à partir de mon téléphone, testé sur vim mobile (ce qui est apparemment une chose réelle).
Voici un gif de celui-ci en cours d'exécution:
Et voici une explication commande par commande:
la source
s
enms
est facultative, vous pouvez le supprimer pour sauver un octet :)JavaScript (ES6), 52 octets
la source
f=(i=40)=>setTimeout(i>70||f,500,i+2,console.log(i))
. Malheureusement, toujours les mêmes 52 octets.50
octets car vous n'avez pas besoin de compter le nombref=
selon la méta-consensus selon laquelle les déclarations de fonctions anonymes sont autorisées?f=
est requis car la fonction doit s'appeler elle-même (en tant que premier paramètre àsetTimeout
).Gelée ,
13 à12 octetsEssayez-le en ligne! Le programme Jelly est encapsulé dans un script Bash pour préfixer chaque ligne de sortie par un horodatage.
Comment ça fonctionne
Après la dernière itération, la valeur finale de 72 est imprimée implicitement et le programme se ferme.
la source
Perl 6 , 30 octets
Désolé que cela ressemble à du code sans jeu, je ne vois pas comment le rendre plus court ...
La version qui s’arrête juste après le dernier numéro serait 37 octets:
la source
36
?.say&sleep(.5) for 40,42...72
29 octets{
crochet suivant une autre expression sans espace est interprété comme le début d’un indice hash ("tableau associatif"). Perl 6 est aussi strict que cela, car sa grammaire a été délibérément conçue pour permettre l’analyse en une seule passe du code source sans (presque) aucun retour en arrière.Pyth - 12 octets
Très simple, utilise une boucle for de 0 à 17.
la source
TI-Basic (CE ou CSE uniquement), 16 octets
Notez que de nombreuses commandes sont des jetons sur un octet.
la source
For(
,Pause
,End
Et les colons au début de lignes sont toutes simples octets.MATL , 14 octets
Essayez-le dans MATL Online! Vous devrez peut-être recharger la page si cela ne fonctionne pas initialement.
Explication
Ancienne version (avant modification des spécifications), effacement de l'écran
Essayez-le dans MATL Online!
la source
Dyalog APL , 20 octets
{
la fonction anonyme⎕DL
retard....5⊣
demi (une seconde) plutôt que la valeur de⎕←
print (avec nouvelle ligne)⍵
l'argument}¨
appliqué à chacun des38+
trente huit plus2×
deux fois⍳17
les entiers de 1 à 17la source
C compilé avec Clang 3.8.1 sur Linux,
625958 octets2 octets enregistrés grâce à @ranisalt
59 octets
62 octets
la source
** ... **
balisage, alors que l'en-tête traditionnel de ce site utilise# ...
. J'ai modifié votre réponse pour que vous puissiez voir comment ça se passe.s<72
enregistre un autre octet.Scratch, 5 blocs
(espace disque 56.0kb)
(désolé pour la basse résolution!)
Explicite, vraiment. La valeur de la variable est affichée dans une case sur la "scène".
la source
Mathematica, 34 octets
Programme complet. Ne prend aucune entrée et ne sort pas vers STDOUT.
la source
R, 49 octets
Solution très triviale mais ça fait l'affaire.
la source
for
-loop, c'est exactement la même longueur.Perl 6 , 27 octets
say
retourneTrue
, qui est forcé à un numérique1
quand divisé par2
.Les manigances Unicode peuvent le réduire à 23 caractères:
Mais cela représente 29 octets codés en UTF-8.
la source
Python 2,
57 5655 octetsMODIFIER:
-1 octet grâce à Mega Man
-1 octet grâce à Flp.Tkc
la source
Ruby, 33 octets
la source
C #, 95 octets
C'est une boucle simple, elle attend 500 ms de plus à la fin.
la source
QBIC , 21 octets
QBIC commence une boucle FOR, allant de 44 à 72 et incrémentant le compteur de 4 à chaque boucle. Il dort ensuite pendant 1 seconde. QBasic n’a pas de contrôle plus fin
sleep
, donc j’ai ajouté un.
pour simuler le fait de donner.5
comme argument.la source
Kotlin, 47 octets
Je suppose que l’énoncé du problème n’indique pas que les solutions doivent en réalité comporter des incréments de deux, c’est donc
40+2*i
légal ici.Si écrit en tant que source Kotlin standard avec
main
:(77 octets)
UPD : Dans Kotlin 1.3,
args:Array<String>
peut être supprimé, donc 18 octets de moins.Et dans Kotlin Script, tout le programme serait
(47 octets)
la source
Ruby 31 octets
Essayez-le en ligne!
la source
Haskell, 67 octets
Si vous voulez utiliser uniquement ghc, vous pouvez enregistrer quelques octets en important
GHC.Conc
et en utilisantthreadDelay
plutôt queusleep
.la source
php, 38 octets
utilise le trait de soulignement comme délimiteur. Courez avec
-nr
.la source
Clojure, 54 octets
Troisième lisp ftw. Il suffit de parcourir la plage, d’imprimer et de dormir chaque itération. Dort à la fin.
Ungolfed:
Une version qui ne dort pas à la fin, 66 octets
Notez que ce sont des programmes complets puisque les instructions ne spécifient pas. Ajoutez un octet à chacun si une fonction est requise.
la source
Raquette 46 octets
Ungolfed:
Commande à exécuter:
(f)
la source
Octave,
3835 octetsVous avez enregistré 3 octets grâce à @LuisMendo en passant
endfor
àend
Essayez-le en ligne!
Je suis nouveau chez Octave, alors cette solution pourrait encore être jouée plus loin. Tous les conseils sont les bienvenus!
Ungolfed
la source
Python 2,
5758 octetsModifier
Compté comme 57 octets sur ma pratique, mais TIO dit 58 maintenant que je suis de retour sur ma propre machine, donc c’est ma dernière offre. Il est intéressant de noter que TIO ne semble pas respecter le délai d’attente et attend simplement, puis affiche la liste entière en une seule fois. Fonctionne sur QPython pour Android et Python 2 sur ma machine Ubuntu, donc ça me suffit.
Essayez-le en ligne!
Serait
5859 en Python 3 alors ne bat pas @ sonrad10 de toute façon.la source
range(...)
R,
4442 octetsSimple pour la boucle, il y a probablement une manière plus golfeuse. (En outre, le 44 barré est toujours régulier 44 ...)
la source
F #, 60 octets
async{for i in 40..2..72 do printfn"%d"i;do!Async.Sleep 500}
Ceci est une expression asynchrone, afin de l'exécuter, transmettez-la à
Async.Start
ouAsync.RunSynchronously
.la source
Noodel , non concurrent de 10 octets
Ne peut pas rivaliser parce que Noodel est né après la création du défi :(
Essayez-le :)
Comment ça fonctionne
Aucune version de Noodel ne prend en charge la syntaxe utilisée dans cette réponse. Voici une version qui est correcte:
la source