Produisez ou affichez les trois lignes de texte suivantes, telles qu’elles sont illustrées ci-dessous. Un retour à la ligne est accepté.
bC#eF&hI)kL,nO/qR2tU5wX8z
A!cD$fG'iJ*lM-oP0rS3uV6xY9
aB"dE%gH(jK+mN.pQ1sT4vW7yZ
Ce bloc de texte est identique à celui ci-dessous, mais la nième colonne est tournée n fois vers le bas:
!"#$%&'()*+,-./0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
Gardez à l'esprit qu'il s'agit d'un défi de complexité kolmogorov , le format de sortie n'est donc pas flexible.
code-golf
string
kolmogorov-complexity
alphabet
Stewie Griffin
la source
la source
Réponses:
Java 8,
1691621501461161131069595939391 919084 octetsOui, nous l'avons finalement fait! Nous avons battu la sortie littérale de 88 octets qui se trouve en bas. Merci à tous ceux qui ont participé au golf!
-7 octets grâce à @StewieGriffin .
-42 octets grâce à @Neil .
-11 octets grâce à @PeterTaylor .
-3 octets grâce à @ OlivierGrégoire .
-6 octets grâce à @ OlivierGrégoire et @Neil (Olivier a suggéré une réponse JavaScript de Neil ).
Essayez-le en ligne.
Explication:
Voyez ici ce que chacune des parties arithmétiques fait et comment elle se termine avec les bons caractères.
Java 8, 88 octets
Ennuyeux,
mais utiliser la rotation prévue des colonnes ne sera certainement pas plus court en Java.Je suis corrigé!Publiera une solution dans un moment ou de l'autre pour voir combien d'octets il diffère.Apparemment, la différence est juste -4 octets! :RÉEssayez-le en ligne.
la source
(x, y)
, ce qui devrait permettre de dépasser votre approche de 169 octets et peut-être même la chaîne littérale.v->{String a="";for(int i=2,j,t;++i<6;){for(j=31;++j<58;a+=(char)(t<1?j+65:t>1?j:j+33))t=(j-i)%3;a+="\n";}return a;}
v->{for(int i=0,r,c;++i<81;System.out.printf("%c",c<1?10:32*++r+c-1/r))r=(i/27+28-(c=i%27))%3;}
c
entièrement supprimés )Husk , 13 octets
Notez l'espace de fuite. Essayez-le en ligne!
Explication
la source
SPL (langage de programmation Shakespeare),
167916181600 octetsJ'ai eu quelques problèmes avec l'interprète ( https://github.com/drsam94/Spl ), donc ce n'est pas aussi petit que je le pensais. Mais au moins ça marche :)
Voici la même logique en PHP, pour rendre un peu plus facile la tâche de voir ce qui se passe.
la source
JavaScript (ES6),
8675 octetsEdit: 11 octets enregistrés grâce à @Ryan. Maintenant, 10 octets plus court que le littéral!
JavaScript (Node.js) , 64 octets
Essayez-le en ligne! Merci à @Ryan.
la source
f=(i=k=0)=>i-80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''
et 11 autres dans un environnementf=(i=k=0)=>i-80?Buffer([++i%27?(4-k++%3)*32%97+i%27:10])+f(i):''
05AB1E ,
1715 octets2 octets sauvés grâce à Erik the Outgolfer
Essayez-le en ligne!
Explication
la source
εN
devrait être une chose. Combine les deux idées devyNFÁ])ø»
et les vôtres.N
utiliserε
. Techniquement, il n’est pas adapté, ceε
n’est pas une boucle, bien que, comme nous l’utilisons parfois comme tel, il serait bien de l’avoir.CJam (18 octets)
Démo en ligne
Dissection
L'approche évidente consiste à générer les lignes d'origine, zip, rotation avec
ee::m>
et zip arrière. Maisee::
c'est assez long, et c'est plus court pour générer les colonnes directement.la source
Python 2 , 72 octets
Essayez-le en ligne!
Cela fonctionne en supprimant
31.333..
du caractère précédent, en ajoutant97
lorsque le point de code précédent est inférieur à 60, et en soustrayant26
à la fin de chaque ligne.la source
R ,
6463 octetsEssayez-le en ligne!
-1 octet grâce à Giuseppe
J'y suis arrivé par de nombreux essais et erreurs, alors je me bats avec une explication concise. Essentiellement, au lieu des codes de caractères, j'ai commencé par une séquence plus simple de 1:81 représentant le bloc de texte d'origine (3 * 26 plus 3 nouvelles lignes), puis j'ai examiné les indices indiquant où ces valeurs se retrouvent dans le bloc pivoté. Cela fait suite à une séquence régulière qui diminue de 26 à chaque fois, modulo 81 (ou de manière équivalente, augmente de 55 mod 81). Il s’agissait ensuite de recréer cette séquence
(0:80*55)%%81+1])
, de mapper les valeurs unicode réellesc(32:57,10,65:90,10,97:122,10)
, de convertir en caractères et d’imprimer.la source
55
lieu de-26
depuis-26 == 55
(mod 81).Japt ,
1715 octetsTestez-le en ligne!
Explication
7 autres 15 titres possibles:
la source
CJam ,
2321 octetsEssayez-le en ligne!
Explication
la source
MATL , 16 octets
Essayez-le en ligne!
Explication
la source
1:26
comme shift. Je devrais essayer ça dans ma réponse au R ...&
était un excellent ajout, d'après l'idée de Suever :-)Gelée , 13 octets
Essayez-le en ligne!
Comment ça marche
la source
Perl 5 , 46 octets
Enregistré 13 octets grâce à @TonHospel magie de Arcane de!
Essayez-le en ligne!
la source
$i++
est juste$_
et tu peux utilisersay
au lieu de,print
alors c'est vraiment50
{}
dans la carte aussi pour49
:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
47
:print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26
. Malheureusement,say
une nouvelle ligne de trop.48
:say map$/x/.A/.chr$n++%26+(65,32,97)[$n%3],A..BZ
R ,
8886 octetsEssayez-le en ligne!
R est terrible en manipulation de corde et bien qu’il ait quelques fonctions de matrice bien définies, les rotations sont une autre chose qu’il ne fait pas très facilement.Je donnerai volontiers une prime à quiconque peut me sur-jouer en R.Malgré le fait que j'ai trouvé une réponse plus courte, j'accorderai quand même une prime de 50 répétitions à la première autre réponse R de moins de 88 octets.
J'imagine que si je le pouvais, je m'attribuerais cette prime, mais c'est deux octets de moins que la réponse "ennuyeuse"! J'évite les rotations en utilisant simplement le penchant de R pour le recyclage.
EDIT: la réponse de user2390246 m'a complètement gommée et je vais attribuer une prime de 100 points puisque cette solution est de loin supérieure.
Pour arriver ici, j'ai décomposé la sortie souhaitée en leurs points de code ASCII avec
utf8ToInt
(suppression des nouvelles lignes), construit une matrice et exécuté undiff
sur eux en obtenant les différences par colonne. Notant la périodicité, je me suis mis à construire la matrice de manière ludique, dans l’espoirdiffinv
de recréer l’original.Grâce à la périodicité, nous pouvons recréer la
diff
matrice ed en forçant R à recycler avec une longueur non multiple et en extrayant les colonnes que nous souhaitions réellement:Ensuite, nous inversons ce processus
diffinv
en recréant les points de code, en ajoutant une ligne de10
(nouvelles lignes) en bas, en le convertissant en ASCII avecintToUtf8
, ainsi quecat
le résultat.la source
Stax,
1412 bytesRun and debug it
Unpacked, ungolfed, and commented, it looks like this.
Run this one
This program only uses features that have been available since the initial release of stax, but apparently I forgot about
K
for cross-map when I originally write this answer.One nearly interesting thing to note about this answer is that the
R
is an unnecessary instruction becauseK
implicitly turns integers into ranges. However there's no way to push3
and26
without some extra byte in between.la source
PowerShell, 53 bytes
Try it online!
I see this is similar to Dom's Perl answer, but I arrived at it independently.
This exploits the fact that the pattern goes
Symbol - Lowercase - Capital
, even when wrapping newlines (8 - z - A
, for example), and thus just adds the appropriate offset (chosen via$j++%3
) to the current number$_
before-join
ing those together into a single string. That's done three times to come up with the three lines (preserving$j
between iterations). Those three lines are left on the pipeline, and the implicitWrite-Output
gives us the newlines for free.la source
Julia 0.6, 79 bytes
[' ':'9' 'A':'Z' 'a':'z']
is the unrotated 2d array of characters,[n,mod1(i-n,3)]
indexes into that array with appropriate rotation.prod
takes a Vector of Characters to a String (since multiplication is used for string join). There are two nested Vector comprehensions resulting in a Vector containing 3 strings, thenprintln.
prints the each string in the Vector followed by a newline.TIO lacks the appropriate method to multiply (with
prod
) two characters to get a String. I know that method was added somewhat recently, but the TIO version appears to be the same as the version on my PC where this code works, so I can't fully explain why it doesn't work on TIO.Copy paste example (the
;
isn't necessary, it just supresses extra output in the REPL):la source
Charcoal,
262115 bytesTry it online! Link is to verbose version of code. Explanation:
la source
J,
29, 2725 bytes-2 bytes thanks to FrownyFrog -2 bytes thanks to miles
Try it online!
Initial approach: J, 29 bytes
Explanation:
i.26
- range 0-2632 65 97+/]
- create a 3-row table for the characters&.|:
transpose then do the next verb (|.
) and transpose again-|."_1
rotate each row n timesu:
convert to unicodeTry it online!
la source
|:u:(<26)2&(|.>:)32 65 97
saves 2 bytes.C,
7069676064 bytes+4 bytes to make the function reusable.
Invalid 60-bytes answer that isn't reusable:
Port of
my Java 8 answer@Neil's JavaScript answer.Try it online.
la source
i=t=0
.APL+WIN, 26 bytes
Index origin 0
Generate a matrix of integer index values of the characters in the APL atomic vector.
Rotate each column downwards by its number value.
Use the resulting indices to display the characters from the atomic vector.
la source
Vim,
8179 bytesExplanation (simplified)
la source
C, 72 bytes
la source
Python 2, 65 bytes
Try it online!
la source
brainfuck,
121115 bytesThanks to @JoKing for saving 6 bytes!
Try it online!
la source
+++[[<+>>++<-]>]
really is the start of everything, huh? Thanks!Japt, 17 bytes
Test it
Explanation
la source
;Bå_cÄ é}"@`" ·y
C
after lunch. Don't know howy
and·
ended up the wrong way 'round; I must haveCtrl+Z
ed too many times beforeCtrl+A
ing!Python 2, 79 bytes
Try it online!
la source
APL (Dyalog Unicode), 23 bytes (Adám's SBCS)
Try it online!
-1 thanks to Adám.
Runs in an interactive environment.
Assumes
⎕IO←0
.la source
(⎕UCS-⊖∘↑32 65 97+⊂)⍳26
or(⎕UCS-⊖32 65 97∘.+⊢)⍳26
K4, 38 bytes
Solution:
Example:
Explanation:
9 characters to perform the rotation...
la source
Perl,
4946 bytesor
la source
$^x8
, but can't think of another var with enough length, perhaps"@INC"
but it's too long, and using"@-"
instead of$n++
, but still, same length. Unless that helps you shrink this further? Unless you add-p
flag and have implicit output?