Dans ce défi, vous recevrez un bloc de texte et vous devrez effectuer une réflexion sur le texte.
Contribution:
- Une chaîne à refléter. Le texte ne peut pas être fourni sous la forme d'un tableau dont les éléments sont les lignes de texte. Par exemple,
"ab\ncd"
et['a','b','\n','c','d']
sont autorisés, mais['ab','cd']
ou[['a','b'],['c','d']]
ne sont pas. Vous pouvez supposer que toutes les lignes ont le même nombre de caractères (complétées par des espaces si nécessaire). - Un booléen où
True
indique la réflexion Y etFalse
indique la réflexion X
Les deux entrées peuvent être passées dans n'importe quel ordre.
Sortie:
La chaîne réfléchie. Les personnages ne changent pas, seulement leur position. Le bloc d'image résultant doit être aligné en haut à gauche (la première ligne et la première colonne doivent chacune contenir un caractère non blanc). Les espaces de fin (sur l'une des lignes) sont autorisés.
Cas de test:
False
o /
--|/
|
/ \
/ o
/|--
|
\ /
True
o /
--|/
|
/ \
/ \
|
--|/
o /
True
text
text
False
text
txet
True
P
P
C
G
G
C
P
P
False
P
P
C
G
P
P
C
G
True
abcde
fghij
kl mn
opqrs
tuvwx
tuvwx
opqrs
kl mn
fghij
abcde
Ceci est un code-golf , alors répondez avec la réponse la plus courte dans votre langue préférée!
1
Et0
) ou devons-nous utiliserTrue
etFalse
?\n
, j'irais jusqu'à dire que ce n'est pas une représentation de chaîne.Réponses:
C #,
168144141120 120 octetsLa nouvelle version utilise la chaîne évidente. Surcharge de jointure qui prend un IEnumerable, la première solution l'utilisait par inadvertance, je pouvais juste l'utiliser aussi pour l'autre côté du ternaire.
Mise à jour:
La nouvelle version est un lambda anonyme et utilise le curry pour économiser 21 octets au total. Cela modifie l'utilisation pour que
f("text")(false)
f soit la fonction anonyme.Non golfé:
la source
Pyke, 7 octets
Essayez-le ici!
la source
Brainfuck,
143140131 octetsBeat
sC #.Le défi était assez facile pour Brainfuck, et j'étais apparemment assez fatigué pour avoir à le faire.
Prend le booléen comme un
0x00
(faux) ou tout autre octet (véridique) au début de l'entrée, puis une chaîne remplie de rectangle.Génère une nouvelle ligne de fin pour le flip Y et aucune pour le flip X.
Nécessite un interpréteur qui prend en charge les emplacements de mémoire à gauche du début (incertain si toujours requis) et donne EOF comme
0x00
. Un tel interprète est ici . Évidemment, ne prend pas en charge les octets nuls dans l'entrée à cause de cela.Le code a beaucoup de blocs avec 10
+
ou-
; ceux-ci peuvent probablement être réduits.Version commentée
la source
Code machine x86 32 bits, 76 octets
En hex:
Entrée::
EBX
indicateur de direction (0/1),:ESI
chaîne d'entrée,:EDI
tampon de sortie. L'entrée doit être rectangulaire.la source
Haskell,
514945 octetsExemple d'utilisation:
Divisez-vous en lignes, inversez les lignes (Vrai) ou inversez chaque ligne (Faux) et joignez à nouveau une seule chaîne. Dans le cas d'une
True
entrée,map r:[r|b]
est une liste de deux fonctions[<reverse each line>, <reverse lines>]
et pour uneFalse
entrée une liste avec une fonction[<reverse each line>]
.last
sélectionne le dernier élément de cette liste.la source
Gelée , 8 octets
Essayez-le ici.
la source
Python, 56 octets
Appelez avec une chaîne
s
et n'importe quelle valeur truey / falseyr
.la source
True
, ce qui pourrait également l'être1
. Vous ne pouvez pas restreindre la saisie à seulement0
ou2
.Python 3.5, 61 octets:
Une simple fonction lambda anonyme qui suppose une entrée rectangulaire. Appelez-la en nommant d'abord la fonction, puis en l'appelant enveloppée à l'intérieur
print()
. En d'autres termes, si la fonction a été nomméeH
, appelez-la commeprint(H(<Bool value>, <String>))
, où<Bool Value>
est toute valeur vraie ou fausse (c'est0/1
-à- diretrue/false
, etc.) et<String>
est la chaîne d'entrée.Voyez-le en action! (repl.it)
Voici une autre version de la même longueur qui suppose également une entrée rectangulaire, mais cette fois une fonction nommée , c'est-à-dire que vous n'avez pas besoin de la nommer d'abord ni de l'envelopper à l'intérieur
print()
:Appelez simplement celui-ci comme
J(<Bool Value>,<String>)
.Voyez cela en action! (repl.it)
Mais ce n'est pas moi qui m'arrête là. Bien que nous soyons autorisés à assumer une entrée rectangulaire, j'ai également créé une version qui n'assume pas ce type d'entrée. Par conséquent, il remplira toutes les lignes à la même longueur sur la base de la ligne avec la longueur maximale si et seulement si l'
<Bool>
entrée estFalse
, car seule une réflexion X entraînera le "retournement" de la chaîne. Maintenant, sans plus tarder, voici la version hypothétique non rectangulaire avec une longueur de134129 octets sous la forme d'une fonction normale:Voir ce dernier en action! (repl.it)
la source
MATL , 11 octets
Essayez-le en ligne!
La première entrée est la chaîne multiligne. Étant donné que MATL ne reconnaît pas
\n
comme saut de ligne, la chaîne multiligne doit être définie comme une concaténation de sous-chaînes, ou des caractères individuels, et10
(ASCII pour le saut de ligne, qui est interprété comme un caractère). La concaténation dans MATL est[... ...]
ou[..., ...]
(les virgules sont facultatives). Ainsi, par exemple, l'entrée peut être la suivante (concaténation d'une chaîne, d'un saut de ligne et d'une autre chaîne):ou de manière équivalente (concaténation de caractères individuels)
ou (même avec des virgules)
La deuxième entrée peut être entrée comme
1
/0
ou de manière équivalente commeT
/F
pourtrue
/false
respectivement.Explication
la source
Brachylog ,
262416 octetsAttend une liste contenant la chaîne et le booléen
1
ou0
, par exempleExplication
la source
Pyth, 10 octets
Suite de tests.
la source
Bash + utilitaires Linux courants, 16
Valeur booléenne (zéro ou non nulle) passée en tant que paramètre de ligne de commande. E / S du bloc de texte via STDIN / STDOUT. Suppose que toutes les lignes ont la même longueur que indiqué dans les commentaires .
la source
C (Ansi), 193 octets
Golfé:
Non golfé:
Usage:
Arguments de compilation:
Exemple d'entrée:
L'entrée est à ou pas t pour vrai ou faux, suivie d'une piste d'espace de news et d'une chaîne de fin.
Exemple de sortie:
la source
JavaScript (ES 6) 83 octets
la source
f(c,0)
quand j'essaye - peut-être que votrec
n'a pas tous les espaces aux bons endroits.Julia, 59 octets
Essayez-le en ligne!
la source
J, 29 octets
L'entrée LHS est le booléen où 0 est faux et 1 est vrai. RHS est l'entrée de chaîne.
la source
JavaScript (ES6), 76
la source
Java 99 octets
Golfé:
la source
Perl, 35 octets
Code de 34 octets + 1 pour
-n
.Nécessite que les lignes d'entrée soient remplies d'espaces. 13 (!) Octets enregistrés grâce à @ Dada .
Usage
la source
perl -ne 'print/T/?reverse<>:map~~reverse,<>'
devrait vous faire économiser 13 octets :-)Mathematica, 70 octets
La fonction anonyme prend une valeur booléenne comme premier argument (explicitement
True
ouFalse
dans Mathematica) et la chaîne (multiligne) comme deuxième argument. Importe la chaîne sous forme de liste de chaînes correspondant aux lignes de la chaîne multiligne (la chaîne n'est PAS transmise à la fonction sous forme de tableau). SiTrue
, inversez la liste. SiFalse
StringReverse
la liste, qui est automatiquement appliquée à chaque élément à son tour. Exportez ensuite la liste sous forme de chaîne, où chaque élément est une nouvelle ligne.la source
05AB1E , 10 octets
Explication
Essayez-le en ligne!
la source
Vim, 33 octets
Changement de la réponse V précédente à Vim. Toute réponse en V serait très différente, donc ce n'était pas vraiment juste.
Essayez-le en ligne!
Hexdump
la source