Adam West est décédé et j'aimerais rendre hommage à sa mémoire ici sur PPCG, bien que je doute qu'il soit au courant de notre existence. Bien que cet homme soit connu pour beaucoup, beaucoup de choses différentes, aucune n’est plus importante que son rôle d’homme- batte originel . Je me souviendrai toujours de mon beau-père qui surveille toujours Batman et Robin, la vieille école, à ce jour. Ce défi est de nature simpliste et ne correspond en rien à l'homme compliqué qu'est Adam West. Cependant, c'est le meilleur que je pourrais trouver, car c'est l'image la plus emblématique de la carrière de l'homme.
Je voulais poster ceci plus tôt, mais j'attendais que quelqu'un propose quelque chose de mieux.
Générez les éléments suivants (avec ou sans espaces de fin / nouvelles lignes):
* *
**** * * ****
**** ******* ****
****** ******* ******
********* ********* *********
***********************************************
*************************************************
*************************************************
*************************************************
***********************************************
***** ********************* *****
**** *** ***** *** ****
** * *** * **
C'est le code-golf , le nombre d'octets le plus bas l'emporte.
la source
Réponses:
Gelée , 44 octets
Essayez-le en ligne!
Comment ça fonctionne
Ceci est un littéral numérique. Tous les caractères sont remplacés par leurs index de base 1 dans la page de code de Jelly. Le résultat est interprété comme un entier bijectif en base 250, ce qui donne
Ensuite,
b25
convertissez cet entier en base 25 eto99
remplace 0 par 99 , donnantJx$
remplace les j ème base-25 chiffres n par n copies de j , donnantMaintenant,
ị⁾ *
indexe dans la paire de caractères. L'indexation étant basée sur 1 et modulaire, les nombres impairs sont remplacés par des espaces, même les astérisques. Cela donnes25
hache le résultat en morceaux de longueur 25 . Si nous écrivons chaque morceau sur sa propre ligne, nous obtenonsL’ atome de rebond
ŒB
palindromise chaque bloc en ajoutant une copie inversée sans son premier caractère, ce qui donneEnfin,
Y
introduit les sauts de ligne réels.la source
“QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY
être assez court à 53 octets ...Wordfuck ,
57612686 octetsJ'imagine que l'utilisation de son nom comme code source procure à Adam West un honneur.
Essayez-le en ligne! (coup de tête transpilé)
Adam West chante (merci @carusocomputing)
la source
Python,
530529528524 octetsla source
B.pop(0)
légèrement ennuyeux. Pourquoi ne pas inverserB
afin que vous puissiez utiliser le beaucoup plus efficace (et plus court)B.pop()
? Lepop(0)
doit déplacer tous les éléments de liste restants vers le bas d'un emplacement. Bien sûr, cela se produit à la vitesse du disque, mais cela reste moins efficace que de sauter à la fin de la chaîne.POP
,BIFF
,POW
,OOF
m'a fait cracher ce que je buvais sur mon moniteur. Merci lol. +1JavaScript (ES6),
148146 octetsDémo
Afficher l'extrait de code
la source
Python,
149142 octets7 octets enregistrés grâce à @ PM2Ring
la source
x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
MATL ,
6159 octetsEssayez-le en ligne!
Comment ça fonctionne
Ceci utilise les techniques standard suivantes:
1
à11
, de sorte que la séquence de durées est compressée par conversion de base, de base11
en base94
(caractères ASCII imprimables à l'exception des guillemets simples, qui auraient besoin d'un caractère d'échappement).la source
[1:12 20 24 99]
ce qui rend la compression plus difficile. Ma meilleure tentative est à 60 octetsY|
,? Je ne connais pas assez de guichets automatiques MATL pour vérifier si c'est effectivement plus court ...[1:24 99]
j'ai enlevé un octet . Si j'utilise[0:24]
(base 25) je ne sais pas comment me transformer0
en99
quelques octetsY|
ne fonctionne pas dans MATL / Octave comme dans Jelly / Python. Dans ce dernier,0 or 99
donne 99 ...05AB1E , 47 octets
Essayez-le en ligne!
la source
replace 99 trick
à lui (sauvegardé 4 octets sur le chemin direct). Toujours à la recherche d'un meilleur moyen cependant..∞
place de€û»
(les miroirs joignent implicitement les listes sur les nouvelles lignes en premier dans la version héritée, avant d'appliquer le miroir). J'ai aussi essayé d'utiliser au₂в
lieu de25в
, mais malheureusement l'entier compressé est alors 1 octet plus aussi bien, il ne sauve rien:•2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в
.vim,
168156 octetsCela suppose un environnement Unix, pour
rev
. J'utilise un (compter, caractère) assez simple encodage, avec N et A un appendinget
*
respectivement, et B faire la copie et la marche arrière.Dans le fichier réel, les entrées entre crochets sont remplacées par les octets littéraux qu'elles représentent.
<C-v>
est 0x16,<ESC>
est 0x1b et<CR>
est 0x0d.Essayez-le en ligne
la source
:nm N a <C-v><esc>
et:nm A a*<C-v><esc>
<C-v>
fichier dans un fichier qu’il ne l’est. J’ai donc utilisé la méthode du rond-point afin de pouvoir le tester{ cat foo.vim; echo ':wq'; } | vim out.txt
. Je ne sais pas pourquoi il ne m'est pas venu à l'esprit d'essayer<C-v><C-v>
hier.-v
drapeau vous permet d’utiliser les descriptions de la clé vim (comme<C-v>
et d’autre<NL>
au lieu de<NEWLINE>
?Charbon de bois ,
69545248 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Edit: Merci à @ ASCII seulement, sauvé 4 octets par le passage d'un indicateur distinct en boucle sur indices,
7 octets en utilisant le (non documenté?)et 4 autres octets en utilisant l'alphabet pour le codage de longueur d'exécution. Enregistré 2 autres octets, car⸿
Caractère,AtIndex
prend automatiquement le modulo. Enregistré 4 octets supplémentaires carMap
crée automatiquement une variable d'index. Explication:L'extérieur
Map
renvoie un tableau.Print
poignées en imprimant chaque élément sur une ligne, ce qui évite d' avoir à la mainJoin
entre eux avec\n
.La chaîne code toutes les demi-lignes de la sortie. Les lettres en alternance font référence au nombre de
*
s et d'espaces (a=0
est utilisé pour gérer une ligne commençant par un espace). L'espace est un choix commode de délimiteur, mais s'avère également bien compresser (x se compresse également sur un total de 55 octets). Chaque ligne est traitée séparément. (Remarque: le déverbosifiant ne parvient pas à supprimer le séparateur entre une chaîne compressée et non compressée, sinon le code aurait une,
lisibilité.)Boucle sur chaque lettre, en développant le nombre approprié de
*
s ou d'espaces. La variablem
est l'index de boucle interne pour celaMap
, alors quel
contient la lettre. Le résultat est ensuiteJoin
édité dans une seule chaîne en utilisant la chaîne vide prédéfiniew
.Une fois toutes les lignes imprimées, faites tout ce qui est à gauche, en superposant la colonne du milieu.
J'ai essayé de gérer les nouvelles lignes, les espaces et les étoiles dans une boucle, mais il a fallu deux octets supplémentaires de cette façon:
la source
Clojure,
833437 octetsPresque par définition, Clojure ne gagnera jamais de prix pour plus de brièveté, mais comme je me réjouissais CHAQUE SEMAINE DE COMMENCER aux DEUX épisodes (count 'em - DEUX ) de Batman (même temps de Bat, même canal de Bat!), Il est clair qu'il y a pas de temps a perdre!
Rapide Robin - à la Bat-REPL !!!
Version non-golfée:
RIP Adam West. Aussi ridicules que soient ces émissions, ceux d’entre nous qui sommes des enfants vous saluent.
la source
C (gcc) , 191 octets
Essayez-le en ligne!
la source
Diverses solutions, toutes utilisant le codage par longueur, avec diverses techniques pour coder les données RLE.
Python 3,
125121 octetsCette version utilise un
bytes
chaîne pour stocker les données.Soit
s
une chaîne d'étoiles ou d'espaces. Ensuite, len
codage en octetss
est donné parPython 2,
133126 octetsCette version utilise un codage alphabétique. La valeur de la lettre détermine la longueur de la chaîne de sortie, la casse de la lettre détermine si elle est composée d'espaces ou d'étoiles.
Ma solution Python 2 originale de 133 octets.
Cette version utilise des chaînes de longueur nulle afin de pouvoir alterner facilement entre les chaînes étoiles et les chaînes spatiales.
Juste pour le plaisir, voici un one-line utilisant le codage alphabétique.
Python 2, 148 octets
Pour encore plus de plaisir, voici un motif du Game of Life de Conway qui génère une version du logo Batman. J'ai dû doubler chaque ligne pour que le rapport d'aspect soit à peu près identique à celui de la version texte. Ce modèle ne calcule pas vraiment le logo (bien qu’il soit possible de faire des calculs dans Life - c’est Turing-complet), il le rejoue simplement à partir de boucles mémoire, donc je suppose que je ne peux pas l’afficher sous forme d’entrée de Je l’ ai créé en utilisant un script Python que j’ai écrit il ya quelques années). ;)
Il est encodé dans un format RLE assez standard que la plupart des moteurs Life peuvent charger. Si vous ne possédez pas de programme GoL (par exemple, Golly ), vous pouvez le visualiser en action en ligne avec ce moteur de vie en ligne , qui peut importer des fichiers Life RLE. Voici une version PNG de ce modèle de vie . Certains programmes Life (y compris Golly) peuvent charger des modèles de vie à partir de fichiers PNG et de divers autres formats de fichier image.
la source
T-SQL,
283 276222 octetsImplémentation de la compression GZIP de la chaîne batman d'origine, via la méthode publiée ici . Cela ne fonctionne que dans SQL 2016 et versions ultérieures.
Pour les versions SQL antérieures, utilisez ma méthode précédente ( 276 octets ):
En gros, je code manuellement une chaîne géante qui détermine ce qu'il faut imprimer ensuite, en utilisant la méthode suivante:
#7
est remplacé par+REPLICATE('*',7)
$4
est remplacé par+SPACE(4)
&
est remplacé par+CHAR(13)
Après remplacement, la chaîne de caractères complète de 958 ressemble à (avec des sauts de ligne à chaque ligne du symbole Batman:
Ce qui est exécuté en tant que SQL dynamique, produisant la sortie suivante:
la source
PHP , 137 octets
Essayez-le en ligne!
PHP , 177 octets
Essayez-le en ligne!
PHP , 179 octets
Essayez-le en ligne!
la source
Java,
296214 octetsGolfé:
Ungolfed:
la source
";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"
pour les données, et enfor(char a:x){a=(int)a-48; [...]
gros ajoute 48 à chacun des nombres et les convertit en leur équivalent en caractères ASCII. Je crois que cela vous fera économiser 70 à 80 octets. De plus, je pense que le codage en dur des données dans le lamba réduira également le nombre d'octets.boolean b=false;
peut êtreboolean b=1<0
, ou mieux encore , vous pouvez utiliser unint
et combiner également la déclaration pouri
sur la même ligne;).i
dans votre boucle, je pense que vous pouvez utiliserfor(int i=0;i++<a-48;)
commefor
tête de ligne.Bubblegum , 75
xxd dump:
Essayez-le en ligne .
la source
Coffeescript (282 octets)
Explication (utilisant ES6 en clair)
la source
V , 102 octets
Essayez-le en ligne!
Hexdump:
Ceci utilise le codage de longueur d'exécution pour générer la moitié de batman suivante:
Et puis inverse et duplique chaque ligne.
la source
Python 2 , 134 octets
Essayez-le en ligne!
Run-length code chaque ligne à partir de la moitié gauche de la base 36. La met en miroir pour créer la ligne complète imprimée. Les espaces en tête ne sont pas codés; au lieu de cela, la moitié gauche est rembourrée à la longueur 25.
la source
Mathematica 151 octets
Pas cher et peu créatif. La chaîne provient uniquement de la
Compress
commande intégrée utilisée sur la sortie requise.Mise à jour:
Je pense que je peux faire mieux avec les fonctions
ImportString
\ExportString
intégrées, mais je ne vois pas comment copier et collerExportString
correctement les chaînes résultantes . Par exempleJe n'arrive pas à copier le texte de la deuxième ligne pour remplacer le texte de
%
la troisième.la source
Bash ,
407322 octetsEssayez-le en ligne!
vraiment horrible, besoin de plus de temps ou d’aide à jouer au golf. il génère la sortie avec 0 et 1 et translittère à la fin. La valeur 0 et 1 est codée en hexa chiffres, en prenant soin de faire le dernier chiffre 0 pour les deux premières lignes en tant qu'indicateur pour la colonne du milieu en sortie. Utilise printf pressision en chiffres ou en chaîne pour les sorties 0 et 1. pense que le
%.$[0x${X}]C
motif pourrait être utilisé pour le jouer.la source
Python 3,
232197183164 octetsEncore une autre réponse en python. Pas de code de compression ennuyeux cependant. Code de compression excitant.
J'utilise le nombre magique 35 car de cette manière, aucun caractère de contrôle, espace ou élément à échapper ne se produit. Triste de devoir traiter les espaces et les étoiles séparément, cela me coûte un peu.
Ungolfed:
la source
print
appel sur la même ligne que le symbolefor
. 2 Si vous utilisez unebytes
chaîne, vous pouvez vous débarrasser de cesord
appels. 3 Vous pouvez remplacer lerange
en zippant une paire d'itérateurs. Voici un générateur qui combine ces deux idées:((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))
. Ces changements vous ramèneront à 164.PowerShell, 305 octets,
307 octets,316 octetsPeut-être que quelqu'un d'autre peut m'aider à raccourcir davantage, bien que je ne puisse pas comprendre comment, sauf s'il existe un moyen plus concis de définir un accélérateur de type personnalisé.
Edit: version abrégée (merci @ root). La chaîne encodée (encodage pré-base64) peut être coupée de huit positions de tableau et la plage peut ainsi être réduite. Vous ne savez pas pourquoi StreamWriter introduit ce problème dans le MemoryStream. Un aperçu du comportement sous-jacent serait apprécié.
Ungolfed:
Code de compression:
la source
[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
$ms.ToArray()
0 sont toutes deux égales à 0. Sont-elles nécessaires?('225','193','82','192','106','2','0','0')
peuvent être supprimées pour créerH4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==
. Je ne comprends pas d'où ils viennent.Perl 5, 168 octets
Notez l'espace de fin à la fin de la première ligne seulement. Requiert
-M5.01
, ce qui est gratuit.Peut probablement être joué au golf un peu plus.
la source
LaTeX, 314 octets
La version non-golfée avec explications:
la source
C # (.NET Core) ,
342 333 328 185175 octetsEssayez-le en ligne!
Beaucoup d'octets enregistrés après le changement d'approche. En prenant le dessin comme un tableau 2D, j'ai calculé le codage RLE par fichiers:
Les indices impairs correspondent à
s et les indices pairs à
*
s. Ensuite, j'ai substitué chaque numéro à une représentation imprimable ASCII (en prenant le caractère '#' à 1) et j'ai obtenu:Donc, l'algorithme calcule simplement le dessin en décompressant cette chaîne et en ajoutant des nouvelles lignes aux endroits appropriés.
la source
l
une variable, utilisez-la directement dans la boucle..ToString(i, 2)
->.ToString(i,2)
c'est-à-dire supprimer les espaces.1e10
) pour ces nombres? Ce défi est réellement utile ici.PowerShell ,
129128 octetsEssayez-le en ligne!
Ungolfed:
Sortie:
L'idée principale est très simple
Le codage de l'emblème:
Décodage (ce script):
Length
foisCertaines choses intelligentes
½
pars*t
(73 astérisques, 0 espaces, 74 astérisques).Extra: Scipt pour le codage de l'emblème
la source
Mathematica, 271 octets
la source
Braingolf ,
590580579577428423312 octets-111 octets parce que LeakyNun est un dieu du golf
Essayez-le en ligne!
Braingolf n'est pas bon en art ASCII, mais bon sang j'ai essayé.
Je ne peux absolument pas expliquer ce clusterf ** k
la source
/// ,
171166 octets5 octets sauvés parce que j'utilisais
\r\n
dans la source, lol.Essayez-le en ligne!
Compressé en utilisant des itérations successives pour remplacer les sous-chaînes "les plus économiques" par un seul caractère. C'est presque optimal, bien que l'une des deux choses pourrait être le cas:
la source