Vous obtenez une seule chaîne ASCII imprimable ne contenant aucune nouvelle ligne, et un "moule" multiligne, contenant des espaces ( ) et des hachages (
#
).
Vous devez parcourir caractère par caractère dans la chaîne et remplacer les hachages en utilisant les caractères de la chaîne dans l'ordre gauche-droite, haut-bas. Si la chaîne est trop courte pour remplir le moule, vous arrêtez la sortie, si la chaîne est trop longue, vous tronquez la chaîne pour remplir exactement le moule.
Exemple de chaîne / moule (chaîne trop longue, tronquée):
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipitmagnanoneratgravidacondimentum.Vestibulumnecnisllorem.Fuscemolestieviverranibh,eueleifendnislplaceratnon.Namblanditturpislacus,vitaemolestielacusimperdietquis.Nullapulvinar,exquissollicitudinfacilisis,eratnullavolutpatlectus,etluctusenimvelitegetex.Inhachabitasseplateadictumst.Donecinterdumnullalacinia,sodalesloremin,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,quisaliquetquam.Aeneanaugueipsum,imperdietsedaliquetnon,volutpategetsapien.Nullampharetranullaquispretiumornare.Aliquamfermentumvestibulummassavitaevehicula.
###########################################################
##### ############## ###### ###### ######################
##### ## ###### # ##### ###### ######## ######
###### # # #### #### ##### ###### ####### ###### #####
###### ### ### ##### ###### ####### ####### #####
###### ##### ### ########### ###### ####### ### ######
###### ###### ### ########## ###### ##### #########
################## #### ##########################
###########################################################
Exemple de sortie:
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipi
tmagn anoneratgravid acondi mentum .Vestibulumnecnisllore
m.Fus ce molest i evive rranib h,euelei fendni
slplac e r atno n.Na mblan dittur pislacu s,vita emole
stiela cus imp erdie tquis. Nullapu lvinar, exqui
ssolli citud inf acilisis,er atnull avolutp atl ectus,
etluct usenim vel itegetex.I nhacha bitas seplatead
ictumst.Donecinter dumn ullalacinia,sodalesloremin
,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,q
Exemple de chaîne / moule (chaîne trop courte, sortie arrêtée):
This probably won't look good.
### ### ### ###
# # # # # #
### ### # # #
# # # # #
# # ### ###
Sortie correspondante:
Thi s p rob abl
y w o n '
t l ook g o
o d .
Le code le plus court en octets gagne.
Crédit pour l'idée de ce site Web .
Réponses:
CJam,
1614 octetsMerci à Sp3000 pour avoir économisé 2 octets.
Se termine avec une erreur si la chaîne est trop courte, mais l'erreur est imprimée dans STDERR.
Essayez-le en ligne!
Alternativement (même nombre d'octets):
Explication
la source
LabVIEW, 37 primitives LabVIEW
divise la chaîne en texte et moule puis les transforme en tableau. Vérifie le moule s'il y a un # et met un caractère à partir du texte sinon il ne fait rien. Si le texte ou le moule sont vides, quittez la boucle
la source
Haskell, 48 octets
appelé comme "(remplacer par une chaîne) # (chaîne de hachage)":
Moins golfé:
la source
import Control.Applicative;main=liftA2(#)getLine getContents>>=putStrLn
Rétine ,
4240 octetsLe nombre d'octets suppose un codage ISO 8859-1.
Le saut de ligne arrière est important.
Essayez-le en ligne!
Explication
Nous remplaçons d'abord ceux
#
qui font partie de la grille par le caractère non ASCII (mais ASCII étendu)×
afin de ne pas les confondre avec ceux#
qui pourraient apparaître sur la première ligne.Maintenant, nous remplissons autant
×
que possible de la première ligne en remplaçant à plusieurs reprises le premier que×
nous pouvons trouver par le premier caractère sur la première ligne (qui est supprimé dans le processus).Enfin, nous nous débarrassons de tout ce qui reste sur la première ligne ainsi que de la première
×
pour tronquer l'entrée dans les deux directions.la source
JavaScript (ES6),
575655 octets1 octet enregistré grâce à @Neil !
Explication
Fonctionne avec des hachages dans la chaîne d'entrée et conserve un espace blanc à la fin une fois la chaîne d'entrée terminée.
la source
m.replace(/./g,c=>...)
plus court./[^]/
place de/.|\n/
. (Je m'excuse également d'avoir suggéré à tort/./
.)Python 3,
696867 octetsIdeone
Merci à FryAmTheEggman, Chiel ten Brinke pour l'octet désactivé. Alternativement, j'aurais pu utiliser Python 2 pour un supplémentaire (
print
sans()
).la source
print
parreturn
.pb , 359 octets
En pb, l'entrée est strictement unidimensionnelle. Il ne comprend pas que vous dessinez une forme avec votre entrée, il ne voit qu'une longue ligne avec quelques octets d'une valeur de 10. La première chose que ce programme fait est de copier tout sauf la première "ligne" d'entrée sur Y = 0, Y = 1, etc., pour créer la forme du moule.
Quelque chose que j'ai beaucoup remarqué dans le golf de code, mais surtout lorsque vous jouez aux langages ésotériques, c'est que vous ne voulez souvent pas avoir deux branches à gérer; vous vous préparez simplement à faire la même chose dans les deux cas. La manière naïve de résoudre ce problème serait probablement de vérifier la longueur de la chaîne par rapport au nombre de hachages dans le reste de l'entrée et de faire quelque chose en fonction du résultat, car elle doit se comporter différemment selon ce qui est coupé. Mais cela fait beaucoup d'octets.
Au lieu de cela, après avoir terminé le moule, une ligne supplémentaire est ajoutée au bas. Il s'agit simplement de
n
hachages consécutifs, oùn
est la longueur de la chaîne. Maintenant, la chaîne est garantie pour s'adapter! Après avoir inséré tous les caractères de la chaîne, cette ligne supplémentaire qui a été ajoutée est détruite inconditionnellement. Tous les hachages restants dans le moule proprement dit sont également effacés, et c'est la sortie nécessaire!Bien sûr, cela violerait la spécification pour simplement détruire tous les hachages. Après tout, il pourrait y avoir un hachage dans la chaîne d'entrée! Pour gérer cela, je me réfère à une autre partie de la spécification:
(Je souligne.) Au moment où nous traitons la chaîne, nous ne nous soucions pas vraiment de la présence de nouvelles lignes, mais nous savons qu'il n'y en a pas. Ainsi, tous les hachages sont remplacés par des nouvelles lignes avant d'être mis dans le moule! Une fois tous les hachages détruits, toutes les nouvelles lignes sont à nouveau remplacées par des hachages. Cela ne transforme pas la sortie entière en une seule ligne délimitée par des hachages car la nature de la sortie 2D de pb signifie qu'il n'a jamais réellement mis de nouvelle ligne à la fin de chaque ligne, il est simplement passé à la ligne suivante.
Non golfé:
la source
ES6, 59 octets
70 octets si le texte peut contenir des hachages:
la source
Perl,
535142 + 2 = 44 octetsNécessite
-p
de fonctionner. Explication:la source
$a=<>;$/="";say<>=~s/#/substr$a,$i++,1/ger
$/
au lieu de rejoindreGelée,
108 octetsEssayez-le ici!
la source
#
dans l'entrée.Perl 6 , 72 octets
la source
ES6, 47 octets
Probablement la solution la plus simple.
Ce code crée une fonction anonyme qui reçoit 2 paramètres et renvoie le résultat final.
Le premier paramètre
S
est la chaîne "map" avec votre"#"
, tandis que le second paramètreR
est le "remplacement" de ceux-ci"#"
.la source
Python 3
152127 octetsUn programme complet.
106 octets
Une fonction qui prend le flux en entrée.
la source