Défi
Écrivez un programme / une fonction complète pour démolir un bâtiment donné au rythme de 1 étage par seconde .
CONTRIBUTION
L'entrée est un bâtiment via STDIN (ou tout autre nom dans votre langue) ou via un ARGUMENT d'une fonction. t = 0 s
|
|#|
{#}
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
l'entrée consiste en:
|
marque le début et la fin d'un étage.{
,}
marque le sol avec des explosifs.#
est une fenêtre qui sert à la décoration.est l'espace, qui est partout à l'intérieur des étages où il
#
n'y en a pas.T
marque le sol (ne peut être démoli).*
marque le sol détoné.
Règles d'entrée:
- le bâtiment commence par le haut avec un
|
et se termine au sol (sans no (T
) = no (char used in ground floor
)). - une fenêtre
#
est à chaque endroit étrange à l'intérieur de chaque étage. T
marque la fin de votre saisie.- un seul étage est composé d'explosifs.
- chaque étage est fait de non impair . de caractères.
- lorsque vous montez les étages, les étages peuvent être de taille égale à celle de l'étage précédent ou 2 caractères plus gros.
- L'entrée peut être considérée comme un tableau de
chars
oustrings
.
Production :
t = 0,5 s
|
|#|
***
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 1 s
|
|#|
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 1,5 s
|
***
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 2 s
|
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 2,5 s
*
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 3 s
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 3,5 s
*****
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 4 s
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 4,5 s
*******
|# # #|
|# # #|
TTTTTTT
t = 6,5 s
*******
TTTTTTT
t = 7 s
TTTTTTT
Règles de sortie:
- chaque étage se termine par un
newline
caractère. - Ground peut / peut ne pas avoir de retour à la ligne.
- sortir le bâtiment (ou ce qu'il en reste) toutes les 0,5 s.
- La sortie est comme une animation qui est modifiée toutes les 0,5 s et s'affiche.
(N'hésitez pas non plus à publier des GIF avec votre réponse)
C'est un Code-Golf donc le code en octets les plus courts gagne!
la dernière date de soumission est dans exactement 5 jours
(Mais vous savez quoi? Gagner n'est pas tout, n'hésitez pas à essayer ce défi dans votre langue préférée, même après qu'un gagnant ait été déclaré:]).
EDIT: J'ai changé la façon dont vous prenez l'entrée (ma mauvaise en fait).
Réponses:
Vim,
4138 octetsIci,
^
est utilisé pour un curseur littéral; ␍ est utilisé pour CTRL-M.Explication
qw:sl 500m␍q
dort une demi-seconde, tout en enregistrant la demi-seconde de sommeil en tant que macro w./{␍
se déplace au sol avec des explosifs.qq
commence l'enregistrement de la macro q, qui s'appellera récursivement.jk
descend et monte; cela génère une erreur si vous êtes sur la dernière ligne (sol); l'erreur met fin à la macro récursive.^v$r*
remplace tout, du premier caractère non blanc à la fin de la ligne par des *.@w
attend une demi-seconde, puisdd
supprime l'étage actuel.:-␍
monte d'un étage sans terminer la macro si vous êtes sur la ligne supérieure.@w
attend ensuite une demi-seconde@q
supplémentaire et appelle la macro q (initialement vide).q@q
arrête d'enregistrer la macro q, puis l'appelle, déclenchant la récursivité.Animation
la source
my answer could be "golfed" further
... ça ne suffit pas? : PJavaScript (ES6),
208198 octetsla source
Java 7,
589477476 octetsOk, c'est un gâchis / long, mais ce défi a tellement de choses ennuyeuses pour Java. Impression multi-ligne;
Thread.sleep(500)
qui nécessite unthrows Exception
; remplacer une sous-chaîne entre deux délimiteurs par une quantité égale de*
; etc.Tout cela fait que le programme est assez gros. Il peut certainement être joué au golf encore plus, peut-être même divisé par deux avec une approche différente, mais au moins il y a une réponse maintenant. ;)
Non golfé:
Code de test:
Essayez-le ici. (Sur ideone, il sort immédiatement et ignore le
sleep
..)la source
try{...}finally{return;}
- être ?throws Exception
Haskell,
245221 octetsExemple d'utilisation:
Comment ça fonctionne:
Remarque: il y a aussi
threadDelay
fromGHC.Conc
au lieu deusleep
fromSystem.Posix.Unistd
qui est un peu plus court, mais cela ne fonctionne qu'avec leGHC
compilateur, donc ce ne serait pas uneHaskell
réponse générique .la source
C,
314287281271 octets-10 après le changement
!=
de-
quand il est possible et d' éviter les ombles littéraux, ainsi queisspace
(Merci à H Walters). Mais le code non golfé reste inchangé.-6 octets après application du coma et suppression
{}
après deuxif
.-26 octets après peu d'optimisation, suppression des parenthèses inutiles, ainsi que changement des variables locales en global (avec initialisation automatique 0) et
b[0]
by*b
.Code de test avec non golfé
f
:la source
s,e,t
extérieur à l'échelle mondiale comme cecis,e,t;
i
avec les autres.Perl, 153 octets
Cela utilise la commande GNU sleep pour attendre 500 millisecondes.
Version non golfée
la source
PHP,
286282274234229 octetsprend l'entrée comme liste de chaînes à partir des arguments de ligne de commande (pas de caractère de nouvelle ligne!)
enregistrer dans un fichier, exécuter avec
php <filename> ' |' ' |#|' ' {#}' ' |# #|' '|# # #|' '|# # #|' '|# # #|' 'TTTTTTT'
panne
la source