Oreoorererereoo
Étant donné une chaîne d'entrée similaire au mot "oreo", donnez une représentation ASCII du cookie aussi large que la chaîne d'entrée (pour assurer la stabilité du cookie).
Règles
- L'entrée est en minuscule, une chaîne non vide, sans espace, qui ne contient aucune combinaison des chaînes "o" et "re", et ne contient que ces chaînes.
- La chaîne "o" représente le cookie solide, tandis que la chaîne "re" représente le remplissage.
- La sortie doit être un cookie empilé aussi large que la chaîne d'entrée.
- La sortie ne peut pas être un tableau de chaînes
- Le cookie doit chevaucher le remplissage d'un caractère de chaque côté
- Les caractères utilisés pour la sortie ne doivent pas nécessairement correspondre à la sortie ci-dessous (et), ils doivent simplement être différents caractères non-blancs pour les deux parties du cookie.
- Le remplissage d'espaces sur le côté gauche du remplissage est requis et tout espace de fin est facultatif.
Exemples
Input: oreo
Output:
████
░░
████
Input: o
Output:
█
Input: re
Output: (two spaces)
Input: rere
Output:
░░
░░
Input: oreoorererereoo
Output:
███████████████
░░░░░░░░░░░░░
███████████████
███████████████
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
███████████████
███████████████
Puisqu'il s'agit de code golf, la réponse la plus courte l'emporte, bonne chance :)
re
devrait maintenant être acceptable1 or 2 spaces
, pas nécessairement 2?Réponses:
Jelly ,
16 1413 bytes-1 Merci à Erik l'Outgoler
Utilisations
1
pour la crème et0
pour le biscuit.Essayez-le en ligne!
Comment?
Précédent 16 byter:
Utilisations
r
pour le cr
eam eto
pour le co
okie.Essayez-le en ligne!
la source
Pepe , 364 octets
Malheureusement, l'interprète en ligne ne s'occupe pas de la compression des commentaires, donc tous les
o
caractères seront remplacés par un espace. Ni les espaces ni leso
sont nécessaires, donc cela pourrait être 295 octets, mais j'aime mieux ça:Essayez-le en ligne!
Ungolfed
Il y a peut-être quelques possibilités de golf avec drapeaux que j'ai ratées, mais j'ai terminé pour le moment:
la source
Toile ,
191817 octetsEssayez-le ici!
Utilise le code fastidieux de
:r≠*┤]
pour supprimerr
s de l'entrée.la source
Japt
-R
,1615 octetsL'essayer
Des alternatives
la source
C # (compilateur interactif Visual C #) , 95 octets
Essayez-le en ligne!
Alternative utilisant Agrégat, 108 octets
Essayez-le en ligne!
la source
o
, car len.Length-2
résultat en sera-1
.n.Length-2
est est pour quand l'entrée are
.R , 106 octets
Essayez-le en ligne!
Version précédente avec explication:
R , 118 octets
Essayez-le en ligne!
Code déroulé et explication:
la source
05AB1E ,
181716 octets-1 octet grâce à @Emigna
Utilisations
o
pour le cookie etr
pour le remplissage.Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
oro
n'est pas une entrée possible, car l'entrée ne contiendra queo
s etre
s. Quoi qu'il en soit,oro
semble toujours sortir correctement en suivant la spécification, car il produitooo\n r\nooo
. Quel est le problème à ce sujet?2*
peut être·
et les espaces manquants peuvent être corrigés en changeant».c
à.c.B»
·
, merci! :) Et toujours agréable d'avoir les spécifications changeantes pendant le défi, soupir ..Retina ,
7473 octetsJ'ai l'impression de ne pas avoir posté de réponse depuis très longtemps. Eh bien, je suis là. De plus, Retina a beaucoup changé et je sens que je suis nul à ça maintenant.
Essayez-le en ligne!
la source
[or]
signifieo
our
au lieu de[
ou]
. Me fait mal à la tête.Retina , 21 octets
Essayez-le en ligne! Explication:
Supprimer le
r
s.Listez chaque lettre sur sa propre ligne répétée à la longueur de l'entrée d'origine.
Remplacez les deux premiers
ee
s sur chaque ligne par un espace.la source
&
: PC (gcc) ,
135113109104 octetsvingt-deuxvingt-sept octets grâce à NieDzejkob .Essayez-le en ligne!
la source
-D$=putchar
e=o
à la condition de la première boucle et supprimez le reste.JavaScript ES6, 103 octets
Utiliser replace 103 octets:
Essayez-le en ligne!
Utiliser split et mapper 116 octets:
Essayez-le en ligne!
la source
${"|".repeat(s>1?s-2:0)}
et ses espaces, au lieu de" "+"|".repeat(s>1?s-2:0)
.Perl 5
-p
, 47 octetsEssayez-le en ligne!
la source
Python 3 , 77 octets
Essayez-le en ligne!
la source
+" \n"
enregistrer un octet.Mathematica,
11191 octetsEssayez-le en ligne!
Cela a été majorly raccourci grâce à Misha de modifications .
Mon code d'origine:
Ce code n’est pas très sophistiqué, mais il semble trop coûteux de se détourner des chaînes, puis de revenir en arrière ou de faire autre chose de malin.
En particulier, avec seulement 3 à 4 commandes nommées String, mon approche originale ne pouvait pas du tout économiser d'octets en essayant d'abstraire cela. Par exemple, 129 octets sont les suivants:
la source
StringRepeat
peut êtreTable
puisque<>
convertira la liste en chaîne plus tard; laIf
est inutile puisque nous ne prenons lare
branche que lorsquen
est au moins 2; nous pouvons économiser sur les parenthèses en définissantn
seulement quand nous l'utilisons. Essayez-le en ligne!If
été ajouté car celaStringRepeat
provoquerait une erreur dans le cas de "re"; cela ne vous permet pas de répéter une chaîne 0 fois.Table
n'a pas une telle limitation, donc c'est un gros gain!Perl 6 , 37 octets
Essayez-le en ligne!
Bloc de code anonyme qui prend une chaîne et imprime l'oreo, avec
o
comme cookie etr
comme crème.Explication:
la source
o
pouvais utiliser à la place de∘
. Très bien joué au golf.Java 11, 110 octets
Utilisations
=
pour le cookie et~
pour le remplissage.Essayez-le en ligne.
Explication:
La solution ci-dessus utilise un remplacement. Les éléments suivants mappent sur les caractères de l'entrée:
Java 11,
113112 octets-1 octet grâce à @Neil .
Essayez-le en ligne.
Explication:
la source
~c&1
?PHP ,
1009993 octetsEssayez-le en ligne!
AIE. Les noms de fonctions waaaay_too_long de PHP frappent encore!
Sortie:
la source
PHP ,
968785 octetsMerci à @gwaugh -9 octets
Merci à @manatwork -2 octets
Essayez-le en ligne!
Essayez-le en ligne! (87 octets)
Essayez-le en ligne (soumission originale de 97 octets)!
Et une fonction récursive
PHP , 135 octets
Essayez-le en ligne! (récursif)
la source
<?=
nous pouvons utiliser<?
, ou est-ce que je me trompe?' '.$r(o,$l-2).""
→" {$r(o,$l-2)}"
.""
istead de''
$argn
: Essayez-le en ligne!JavaScript,
726564 octetsEssayez-le en ligne
la source
Powershell,
716966 octets-2 octets merci @Veskah
-3 octets merci @AdmBorkBork
Script de test moins joué:
Sortie:
la source
$args
69 octets[string[]]
est un[int[]]
... La valeur[int[]]
est[int]
si le tableau ne contient qu'un seul élément. Génial! Merci!r
pouvez être à la" "+'%'*($l-2)
place pour -3 octets.Charbon de bois , 19 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
Boucle à travers les caractères de la chaîne d'entrée.
Allumez chaque personnage.
S'il s'agit d'un,
o
imprimez la chaîne d'entrée remplacée par#
s sur sa propre ligne.S'il s'agit d'un
e
déplacement vers la droite, imprimez une ligne de-
s de deux fois moins que la longueur de la chaîne d'entrée, puis déplacez-vous vers le bas et la gauche.la source
Bash, 87 octets
Sans
sed
:Merci à @manatwork.
Avec
sed
(90 octets):la source
test.sh
. Ensuite, vous appelez test.sh de la ligne de commande comme suit:bash test.sh oreoorererereoo
.f
est nécessaire pour répéter le$2
$1
nombre de caractèresC # (compilateur interactif Visual C #) , 71 octets
Essayez-le en ligne!
Emprunté quelques idées sur la réponse de Incarnation of Ignorance à coup sûr.
-6 octets grâce à @ASCIIOnly!
Le concept général consiste à calculer un agrégat de chaîne sur les caractères en entrée en respectant les règles suivantes:
r
est rencontré, ajoutez uncaractère d' espacement unique pour l'indentation. Nous savons que le prochain personnage sera un
e
.o
ou une
est rencontré, générez une chaîne en répétant le caractère actuel un nombre spécifique de fois et en l'ajoutant à une nouvelle ligne ou à un remplissage et à une nouvelle ligne.PadLeft
fonction est utilisée pour générer la chaîne de caractères répétitive.Le résultat est la concaténation de toutes ces chaînes.
la source
Pyth , 28 octets
Essayez-le ici! Celui-ci utilise une boucle.
Pyth, 30 octets
(Comme chaîne remplace)
Essayez-le ici! Celui-ci utilise le remplacement de chaîne.
J'aime beaucoup le python (c'est ce que j'ai écrit dans mes scripts de test originaux), alors j'ai pensé faire une entrée pyth pour le plaisir :)
la source
█
et░
trois octets chacun. Ou est-ce que je manque quelque chose ici?N
, même en sauvegardant quelques octets!33 chars, 37 bytes
, mais pas dans les langues de golf sur TIO. Mais dans vos solutions, le simple fait de changer ces personnages corrige effectivement le problème. Ce n'est donc pas un si gros problème ici.Ruby ,
6260 octetsEssayez-le en ligne!
Utilisations
O
pour le cookie,*
pour le remplissage.-1 grâce à @manatwork signalant une erreur stupide et une autre -1 en raison d'un assouplissement des règles concernant les espaces.
la source
.gsub
des paramètres.C # (.NET Core) , 143 octets
Sans LINQ.
Essayez-le en ligne!
la source
Clojure , 137 octets
Je n'utilise pas les beaux personnages de l'imprimé dans la version avec golf car ceux-ci sont chers. Retourne une chaîne à imprimer.
Essayez-le en ligne!
Voir ci-dessous pour l'explication.
Pré-golfé:
la source
Dart ,
120106107 octetsEssayez-le en ligne!
la source
Python 2 ,
777672 octetsEssayez-le en ligne!
La partie extérieure du cookie est "o" et le remplissage est "r".
la source
+' '
après(l-2)
. En outre, vous avez une faute de frappe,*' '
doit être+' '
.Code machine x86-64 (Linux), 97 octets
Cette fonction x86-64 prend le pointeur sur la chaîne d'entrée en rsi et construit la sortie à partir du pointeur dans rdi (ce sont les registres utilisés pour passer les deux premiers arguments d'une fonction C sous Linux). Pour plus de commodité, j'ai écrit un wrapper C ++ à cet effet, qui désinfecte également les entrées et les imprime. Ce code peut être localisé ici . Cela montre également l’assemblage de syntaxe nasm original que j’ai écrit pour cette fonction (ainsi que la version non golfée que j’ai travaillée en premier).
Il convient de noter que ce code ne respecte aucun des registres sauvegardés appelés, ce qui signifie que le code C ++ risque de planter s'il est exécuté pendant un certain temps après avoir appelé cette fonction. Sur ma machine, ce n'est pas le cas, mais c'est plutôt surprenant. Je n'ajoute pas non plus d'octet nul pour délimiter la chaîne de sortie, mais l'espace alloué à la chaîne de sortie est prérempli d'octets. (Si cela n'est pas autorisé, je peux ajouter le terminateur nul au coût de 3 octets).
La logique de ce code consiste essentiellement à compter la longueur de la chaîne, puis à construire une ligne de cette longueur pour chaque caractère "o" et "r" de la chaîne d'entrée, puis pour tout caractère "e", en remplaçant le premier. et les derniers caractères de la ligne précédente avec des espaces.
Je ne trouve aucun endroit en ligne pour compiler et exécuter un mélange de code source C ++ et nasm. Il est donc possible que j'écrive un petit code wrapper afin de prouver que cela fonctionne.Sinon, vous devriez pouvoir compiler et exécuter ceci avec le makefile dans le lien que j'ai donné avec la commande:J'ai été capable de formater l'ensemble en un format acceptable par gcc, essayez-le en ligne!
la source