Production
# # # # # ##### ## # ## #### ####### # # ## #### ## ## # ### ####### # # # # ##### ### # # # # ### ##### ##### # # # ####### ### # ### # ## #### ## # # ### # ####### ## # ## ##### ##### # # # ## # # # # ##### # ## ## ####### # ####### #### ## # ### ### # # # # # ##### # # # # ### ##### # #### ####### ### # ## ## ## # # ####### # # ## ##### # # # # ##### ## # # ####### # # ## ## ## # ### ####### #### # ##### ### # # # # ##### # # # # # ### ### # ## #### ####### # ####### ## ## # ##### # # # # ## # # # ##### ##### ## # ## ####### # ### # # ## #### ## # ### # ### ####### # # # ##### ##### ### # # # # ### ##### # # # # ####### ### # ## ## #### ## # # ####### #### ## # ## ##### # # # # # # ## #### # # # # ### ####### ## # # ## ##### ## # ### # # ## # ### ####### ##### ### # # # # # ## #### #### ## # # # # # # # # ##### ## #### ####### # #### ## ## # ### # # # # ##### # # ### ##### ##### # ####### ### # ### # ## ## # # ### # ####### # ## ##### ##### # # ## # # # ## ## ####### #### ### # # # # # # # # ### #### ####### ## ## # # # ##
Espaces de fuite autorisés. La solution la plus courte l'emporte.
indice1:
merci @Tahg pour corriger hint1
Réponses:
SOGL V0.12 ,
171614 octetsEssayez-le ici!
À une mise à jour ultérieure
č▓
pourrait être supprimée pour 12 octets - qui convertit ToS à partir d'un tableau de tableaux de caractères une chaîne multiligne en un tableau de chaînes -[["#","#"],[" ","#"]] -> ["##"," #"]
-, parce que┼
- ajout horizontal - ne gère pas bien les tableaux de tableaux de caractères - quiI
crée, car il est également utilisé pour la rotation du tableau. Dans SOGL, un tableau de tableaux de caractères devrait être = tableau de chaînes, mais beaucoup de choses ne le prennent pas encore en charge.Explication:
la source
JavaScript (ES6),
233217213198182 182170163122 octetsEdit: enregistré
1418 octets grâce à @Shaggy. Enregistré 3 octets grâce à @ngn. 12 octets supplémentaires enregistrés grâce à la collaboration des deux. Enregistrement de 41 octets en volant les observations de @ user202729 selon lesquelles les quartiers utilisent des réflexions plutôt que des rotations. Non golfé:la source
f=
ici? Bien fait, au fait.f=
du nombre d'octets, mais l'extrait de code ne fonctionne pas sans lui.LOGO,
375341297295278 + 3 octetsAjouter 3 octets à cause de l'
-p
indicateur, qui active le mode perspective par défaut, donc n'a pas besoin d'exécuter laperspective
commande, économise 9 octets au total.Utiliser FMSLogo sur Windows avec le format de nouvelle ligne Unix (LF) (FMSLogo a un problème avec l'analyse du format de nouvelle ligne CR)
Malheureusement, aucun "Essayez-le en ligne!" lien car je ne trouve aucun mode de perspective de prise en charge d'interprète en ligne.
Idée: dessinez une image de l'image, puis récupérez les pixels de l'image et imprimez-la en sortie.
Répartition de l'image en parties répétées simples:
.
Utilisez l'astuce ci-dessus. Cependant, comme LOGO ne prend pas en charge la réflexion, nous ne pouvons simuler cela qu'en entrant en
perspective
mode 3D ( ) et en tournant la tortue à 180 degrés autour d'un axe parallèle à l'écran de l'ordinateur.Ceci définit une fonction d'assistance
g
, qui a donné 2 paramètresl
(longueur du côté de l'image) etw
(procédure utilisée pour dessiner l'image), dessine 3 copies de son image réfléchie. (voir indice dans la question) La procédureh
exécute la procédure principale.la source
90 fd
->90fd
et enregistrer quelques octets.05AB1E ,
3026 octetsEssayez-le en ligne!
la source
CJam , 30 octets
Essayez-le en ligne!
la source
Python 2 ,
205195 ... 145144142144 octetsEssayez-le en ligne!
Inspiré par la réponse JS de Neil .
la source
n>>1
estn/=2
.a
est défini puis utilisé une fois. Remplacer sa référence par sa valeur pourrait économiser quatre octets.[...[x],...[x]][z]
sélection .Haskell,
126125113106 106103 octetsUne implémentation directe de hint1 dans le spoiler.
La fonction
m
génère l'itération suivante. Les fonctions principales s'appliquentm
6 fois. Détails pourm
:Edit: @ngn a enregistré un octet et @Laikoni un autre 3. Merci!
la source
n$n$n$n$n$n["#"]
est plus court queiterate n["#"]!!6
:)e=[]:e;foldr(zipWith(:))e
place deimport Data.List;transpose
puis raccourcirzipWith
.Java 7,
259 238 237200 octetsEnregistré 2 octets en supprimant le {} sur la boucle x, merci ngn
Enregistré 19 octets à partir de divers changements d'affectation, merci Jonathan
Enregistré 24 octets pour l'impression vs le retour (ne savait pas que cela était autorisé), et
Enregistré 13 octets pour les changements de boucle, merci Nevay
Essayez-le en ligne!
My first challenge, and I think respectable for Java. Uses hint 1, (which is wrong btw, but I can't write comments). It can probably be golfed further, this pass was basically as is, without pretty printing.
la source
s=1
from your for loop and replacingint s,t,x,y;
withint s=1,t,x,y;
.n[s-1-y][x]=o[y][x];n[y][t-1-x]=o[y][x];
->n[s-1-y][x]=n[y][t-1-x]=o[y][x];
.J,
3027 bytesTry it online!
Original version.
Try it online!
la source
Python 2, 586 bytes
Try it online.
Python 2,
10321025 bytesI like this one more. But it is much longer. It could be golfed down but there is no need for that. officialaimm's approach is much shorter.
-7 thanks to Jonathan Frech
Try it online.
la source
[t]railing spaces
, though your solution omits some spaces.x=='!'
->x<'#'
if x.isdigit()
->if"/"<x<"@"
Mathematica,
11290 bytesThanks to Jonathan Frech for help saving 2 bytes!
Try it online! (Mathics)
For some reasons, Mathics prints leading spaces in all lines except the first one when print multiline string. Also Mathics doesn't support operator
.Explanation:
{{Reverse@#,Reverse/@#},{" "+0#,#}}
: Represent the reverse-horizontally, reverse-vertically, replace-all-by-" "
, and transpose (
is transpose operator in Mathematica), corresponding to different ways to reflect or rotate the image.~Flatten~{{1,3},{2,4}}
: Flatten in particular dimensions.Nest[ ... ,{{"#"}},6]
: Apply the function inside to{{"#"}}
6 times.~Riffle~"<literal newline character>"
: Riffle a newline character between each line.""<>
: Join all strings together.la source
Reverse
withR
and defineR=Reverse;
to save two bytes.C# (.NET Core),
10161002980955 bytesSaved 14 bytes thanks to Kevin Cruijssen!
Saved 47 bytes thanks to Jonathan Frech!
Try it online!
Explanation
The format of the output is stored inside an array of signed 64-bit numbers, which fits perfectly since each line is 64 characters long. Empty spaces are represented by
0
and#
is represented by1
.The numbers are then converted to their binary string, zeros are padded left until the string is 64 characters wide and then the
and
0
and1
characters are replaced with#
.The code is stored inside a lamba function, more specifically a
System.Func<string>
.Some constants in the
long[]
are shortened by performing some bit-shifting.la source
long[] n=new[]
?l
is not needed, you can probably save even more bytes.Charcoal, 42 bytes
Try it online! Link is to verbose version of code. Would be 25 bytes if this worked:
Explanation:
Manually generate the first recursion, since it's not possible to rotate around (1, 0.5). (Such a rotation would only make sense if it was 180°.)
Loop over the first five powers of 2 (1, 2, 4, 8, 16).
Reflect the canvas vertically. This completes the top left quarter of the result.
Rotate the canvas 180° around a point half-way up the right-hand side. The copy ends up in the correct position for the top right quarter of the result.
Rotate the canvas 90° around the bottom right corner. The copy of the top right corner ends up in the correct position for the bottom right corner of the result. The copy of the top left corner is extraneous.
Trim the canvas to the size we want. The trim starts at the cursor or the top left of the canvas, whichever is bottom rightmost. The cursor is therefore sent to (0, -1000) to ensure that it doesn't interfere with the trim.
la source
Dyalog APL, 29 bytes
Try it online!
la source
((⊖,⌽)⍪∊,⍉)⍣6⍪⍕#
with⎕ML←0
.Python 2,
715711 bytesTry it online!
la source
Perl 5, 452 bytes
451 bytes code + 1 for
-p
.Packs all the data into the string, rather than stealing @Neil's correct answer.
Reversible output from
xxd
for 451 byte file:Try it online!
la source
Jq 1.5,
538535488476 bytesThis is a straightforward representation.
I haven't attempted any fancy encodings yet.Replaced 0,0 pairs with Z function.Thanks again to Jonathan Frech for helping eliminate 3 bytes!
Character count
Sample run
la source
B: rec
and16) as $l|
.if.==0then" "else"#"end
->if.>0then"#"else" "end
.Python 2,
174164154 bytes (based on matrix operations)Try it online!
la source
import *
->import*
;in s.tolist()
->in s
Canvas, 10 bytes
Try it here!
la source
JavaScript (Node.js), 1233 bytes
Try it online!
la source
C# (.NET Core),
976969 bytesTry it online!
la source
<s>969</s>
to cross out the previous bytes.C# (.NET Core), 739 bytes
Try it online!
Uses the same approach is this other answer.
la source
K (ngn/k),
323127 bytesTry it online!
6{
}/
6 times do+x
transpose|x
reverse vertically+|+x
reverse horizontally,
concatenate vertically,'
concatenate horizontally,[A;B]
is the same asA,B
. it helps avoid parentheses aroundA
and around the whole expression""x
use the elements ofx
as indices in the empty string. out-of-bounds indexing produces spaces, so this expression will return an all-spaces matrix, same size asx
la source