Inspiré par Golf, je suis un alphabet ASCII , dont le défi est (presque) un inverse.
Tâche:
Prenez une chaîne de texte ASCII et affichez le contenu du texte sous forme de texte ASCII normal.
Contribution:
Chaîne de texte ASCII-art.
L'entrée ne contiendra que des occurrences de caractères ASCII #
, d'espaces et de 4 ou 5 nouvelles lignes (une nouvelle ligne est facultative). Toutes les lignes ont la même longueur. (C'est-à-dire que la dernière lettre ASCII-art est complétée par des espaces.) Vous pouvez utiliser un autre caractère ASCII imprimable à la place de #
l'entrée si vous le souhaitez.
L'entrée contiendra des lettres A-Z
ASCII-art et des espaces ASCII-art (un bloc 5x5 d'espaces). Pas de ponctuation. Il n'y a qu'une ligne de texte ASCII-art (5 lignes réelles). Il n'y aura pas d'espaces artistiques ASCII de fin ou de fin, ni d'espaces artistiques ASCII adjacents.
La taille de la lettre est de 5x5 caractères. Il y a un espace de 1x5 entre chaque lettre. L'espace entre les mots est un bloc d'espaces de 5x5 (+ 1x5 de chaque côté car il ne s'agit que d'une autre lettre). Il n'y aura pas d'espace 1x5 à la fin ou au début, seulement entre les lettres ASCII-art.
Sortie:
Chaîne contenant le texte sous forme de caractères ASCII A-Z
+ espaces. La sortie peut également être en minuscule, si cela est plus facile pour votre solution. Les cas mixtes sont également autorisés.
Les lettres ASCII-art:
### #### ### #### ##### ##### ### # # ##### ##### # # # # #
# # # # # # # # # # # # # # # # # # ## ##
##### #### # # # #### #### # ## ##### # # ### # # # #
# # # # # # # # # # # # # # # # # # # # # #
# # #### ### #### ##### # ### # # ##### ### # # ##### # #
# # ### #### ### #### ### ##### # # # # # # # # # # #####
## # # # # # # # # # # # # # # # # # # # # # #
# # # # # #### # # #### ### # # # # # # # # # # #
# ## # # # # # # # # # # # # # ## ## # # # #
# # ### # ## # # # ### # ### # # # # # # #####
L'espace:
|
| A 5x5 square of spaces.
| (Padded with |s to make it appear in this post.)
|
|
Exemples:
Contribution:
# # ##### # # ### # # ### #### # ####
# # # # # # # # # # # # # # # #
##### #### # # # # # # # # # #### # # #
# # # # # # # ## ## # # # # # # #
# # ##### ##### ##### ### # # ### # # ##### ####
Sortie: HELLO WORLD
Contribution:
### ### ### ##### #####
# # # # # # #
##### ### # # #
# # # # # # #
# # ### ### ##### #####
Sortie: ASCII
Contribution:
#### #### ### ###
# # # # # # #
#### #### # # ##
# # # # # #
# # ### ###
Sortie: PPCG
C'est du code-golf , donc la réponse la plus courte en octets est gagnante.
Réponses:
Gelée ,
50 4442 octetsEssayez-le en ligne! (notez que l'argument n'exige pas la nouvelle ligne principale, mais comme les nouvelles lignes principales et suivantes n'ont aucun effet, j'en ai inclus un pour rendre la chaîne multiligne plus lisible par l'homme)
Les résultats sont mixtes (comme le permet le PO dans un commentaire ).
Comment?
Divise sur de nouvelles lignes, transpose et assemble des sous-tranches de (jusqu'à) six ensemble pour obtenir les représentations et inverses des caractères (équivalant à la conversion de base la plus récente pour le dernier caractère de longueur 25 à tous les autres de longueur 30). Puis les cartes
'#'
et' '
à un et zéro respectivement en utilisant le fait qui'#'
a un ordinal impair alors que' '
a un pair. Lit chacun comme s'il s'agissait d'un nombre de base sept. Prend effectivement le modulo 81 de chacun (pour donner 27 valeurs uniques pour les 27 cas possibles), et finalement l'indexation dans une "chaîne magique" avec les caractères corrects aux index corrects (l'indexation modulo est utilisée avec une chaîne magique de longueur 81 pour la sauvegarde) 2 octets).Voici la "chaîne magique" que j'ai créée avec un motif de regex (insensible à la casse) dont il a besoin pour correspondre (j'ai ajouté "ed" pour en faire la longueur 81):
En tant que tel, il peut être compressé, en recherchant onze sous-tranches sous forme de mots dans le dictionnaire de Jelly (dont la plupart utilise la valeur par défaut d'espace):
ce qui aboutit à la chaîne compressée Jelly,
“¥ŒƲVĊ⁾|W£⁼³ƭÇuʋụzḢĖ0ḢẆẠØsĠỌỊ»
Le reste du code fonctionne comme suit:
la source
Python 2 ,
405335234182171 octetsEssayez-le en ligne!
Enfin plus court que JS
la source
[0,2,3,7,...]
et le' UBGOTA...
diviser, et utiliser une sorte de cartographie.0:' ',2:'U',3:'V'...
semble si long ,,, il y en a tellement:'',
. (Je sais que vous aviez quelque chose de similaire dans le post original, mais avec des chiffres très longs.JavaScript (ES6),
204186184182 octets18 octets sauvés grâce à Neil
2 octets sauvés grâce à ETHproductions
2 octets sauvés grâce à YairRand
Panne:
162144142140 octets de codeDémo
Afficher l'extrait de code
la source
(a=s.split`\n`)[0].replace(/......?/g,
avecsubstr(n,5)
et sans lejoin
bien sûr.c=>0|c>' '
, et un autre avecp+='0b'+...
\n
saisie d’entrée n’est pas valide. Cependant, je pense que vous pouvez utiliser le littéral de modèle avec une nouvelle ligne comme entrée, comme vous le faites dans lasplit
méthode.\n
dans un littéral de chaîne sur le site d’appel dans le code est acceptable, car la chaîne réelle transmise à la fonction inclut uniquement le caractère de nouvelle ligne, pas à la fois\` and
n. Passing a string that contains
\ `etn
des caractères adjacents séparés ne sont pas acceptables.Bash + ImageMagick + Tesseract , 161 octets
Je voulais essayer l'approche suggérée par @ stewie-griffin et j'ai opté pour bash + ImageMagick (convertir une chaîne en image) et Tesseract (pour effectuer l'OCR). Voici mon code, qui fonctionne pour le test 'HELLO WORLD', mais échoue pour les autres. Peut-être que quelques ajustements des paramètres (police, taille de la police, crénage, espacement) peuvent vous aider.
Il suffit de copier-coller l’art ASCII dans la ligne de commande après avoir exécuté la commande. Terminez votre saisie en appuyant sur ^ d.
Sortie actuelle pour les cas de test:
la source
Scala,
184181 octetsUne chaîne magique + solution modulo basée sur
hashCode
:)Essayer en ligne (Scalafiddle)
Plus lisible:
Des explications
'#'
ou' '
).% 106 % 79 % 47
) sont appliqués pour associer un nombre[0; 47[
à chaque caractère ASCII (voir les explications ci-dessous)Comment obtenir la chaîne magique?
Tout d'abord, j'ai représenté toutes les lettres comme ceci:
Ensuite, j'ai créé un alphabet contenant les représentations ASCII de tous les caractères:
Exemple :
devient
Pour chaque lettre, un hashcode absolu a été calculé (tous les hashcodes sont distincts):
Ensuite, j'ai essayé de diminuer chaque code, mais en respectant toujours le fait que chaque code doit être unique (la liste groupée par code doit comporter 27 éléments, un pour chaque lettre). J'ai donc essayé le premier 200 module:
J'ai trouvé
106
comme premier modulo à appliquer:J'ai répété les étapes précédentes jusqu'au plus petit modulo. J'ai trouvé :
Note: Le dernier modulo que j'ai choisi (
47
) n'est pas le plus petit ici:%106%79%47%44
(13 caractères au lieu de%106%79%47
= 10 caractères). Donc, en octets, le code aurait dû avoir la même taille que celui que j'ai obtenuEnsuite, j'ai appliqué le dernier module (
% 79 % 47
) au derniercodes
, pour obtenir les codes définitifs associés à chaque lettre:Enfin, pour construire la chaîne magique:
Exemple: La lettre
A
ci-dessus est associée à 46 (380997542 % 106 % 79 % 47
) et le 46ème élément de la chaîne magique est A :)Cas de test
BONJOUR LE MONDE :
ASCII:
PPCG:
Édite
.
avantmap
,toArray
etmkString
la source
PHP, 294 octets
Essayez-le en ligne!
Étendu
Conversion de l'entrée en un format d'image
@Stevie Griffin recherche une solution pour obtenir cela à partir d'une image. Je pense qu'il ne veut pas vraiment le format d'image que j'ai utilisé.
SVG peut contenir des parties HTML si elles sont ensuite incluses dans un foreignObject. Donc, je mets un pre Element dans un SVG.
Sortie d'image
Résoudre à partir de changements d'image
Le SVG est lisible par machine. Après avoir sauvegardé le SVG en tant que "i.svg", vous ne devez donc le remplacer
$_GET[0]
quepreg_replace("#(^.*e>)(.*)(</p.*$)#s","$2",join(file("i.svg")))
par une entrée normale + 55 octets.la source
Powershell,
152146 octetsScript de test:
Sortie:
Remarque:
$t|% s*g $c,5|% t*y|%{$s+=$s+$_}
est un raccourci pour$t.substring($c,5).toCharArray()|%{$s+=$s+$_}
("abcd","efgh").substring(1,2)
renvoie le tableau("bc","de")
("bc","de").toCharArray()
renvoie le tableau('b','c','d','e')
la source
C,
225209 octetsMerci à @ceilingcat d'avoir économisé 16 octets!
Essayez-le en ligne!
la source