Objectif
L'objectif du programme est de dessiner un rectangle d'art ASCII doublé de taille à plusieurs reprises, alternant horizontalement et verticalement. Chaque fois que le rectangle double de taille, la zone supplémentaire est représentée par un caractère différent et les zones précédentes restent inchangées. Les deux plus petites sections contiennent chacune un caractère et peuvent se trouver dans n'importe quel coin.
Le programme accepte un seul entier en entrée, définissant le nombre de sections que contient le rectangle complet.
Aucune autre ressource ou entrée externe n'est autorisée.
Exemple d'entrée et de sortie
10
ABDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
CCDDFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
EEEEFFFFHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
GGGGGGGGHHHHHHHHJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
IIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJJ
Les critères de sélection
Le code le plus court en une semaine remporte les points.
Réponses:
APL, 25 caractères / octets *
Vue éclatée
Exemples
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
*: APL peut être écrit dans son propre jeu de caractères à un octet (hérité) qui mappe les symboles APL aux valeurs supérieures de 128 octets. Par conséquent, aux fins de la notation, un programme de N caractères qui utilise uniquement des caractères ASCII et des symboles APL peut être considéré comme long de N octets.
la source
GolfScript, 30 caractères
Exemple (exécuté en ligne ):
la source
Python 2.7 - 85
103Cela utilise la
zip(*s)
syntaxe pour transposer continuellement la liste. Un grand merci à Daniel pour son astuce qui a rasé 12 personnages! Puis rasé un peu plus en utilisant des chiffres au lieu de lettres.En outre, cela utilise
1<<x
plutôt que2**x
le décalage binaire a une priorité inférieure (?). Observer:Et une sortie:
la source
for i in s:print''.join(i)
.Rubis, 88
Lit N à partir de l'entrée standard.
Exemple d'utilisation pour N = 8:
Production:
N = 10
Production:
la source
J,
5743Exemples:
la source
MATLAB, 86 caractères
Mon essai le plus court dans MATLAB, soutiré par @flawr (deux fois!):
Exemple de sortie:
la source
function M=f(n) M=''; if n M=cat(mod(n,2)+1,f(n-1),64+n*ones(2.^fix([n-1,n-2]/2))); end
fix
parfix(n/2-[.5,1])
PS: solution vraiment sympa aveccat
, ne connaissait pas cette utilisation où vous pouvez choisir la dimension =)q [73 caractères]
exemple
la source
Sclipting , 59 caractères
(Ce programme pourrait être un peu plus court si j'avais des instructions pour le logarithme en base 2, mais je n'en ai pas, donc je le fais manuellement avec une boucle.)
Code annoté
n
est l'entrée.Production
Pour
n
= 6:Bien sûr, vous pouvez remplacer
뀀
(@
) par tout autre caractère de base, par exemple avec글
(espace) etn
= 7:Le nombre le plus élevé qui ne rallonge pas le programme est
믰
(= 255), ce qui nous donne (n
= 8 cette fois):Si nous allongons le caractère du programme 1, par exemple en utilisant
냟및
(=\u4DFF
) etn
= 9, nous obtenons:la source
C #,
239185182180 180 octetsC # n'a rien sur les langages les moins verbeux.
Sortie, caractères choisis pour la beauté:
la source
for
boucle extérieure , ce qui fait 182.PERL, 122 caractères
avec des espaces ajoutés:
Production:
la source
PERL,
9481 caractèresIl construit la fractale de manière itérative lettre par lettre, en ajoutant de nouvelles lignes et colonnes et lignes et colonnes ... Utilise des opérations de chaîne simples pour ce faire. Notez que j'abuse de la variable standard au lieu de la lettre un pour permettre le sucre de syntaxe (comme omettre des espaces -
$:x2
etc.)Avec des espaces et des commentaires ajoutés:
Quelques sorties:
la source
Sclipting , 45 caractères
Cette solution fonctionne complètement différemment de l'autre solution Sclipting. C'est beaucoup plus ennuyeux, mais c'est plus court ...
Annoté
la source
Delphi 348 || 449 avec tiret
Sans retrait
Avec retrait
la source
CJam, 30 (23) octets
CJam a quelques mois de moins que ce défi, il n'est donc pas éligible à la coche verte.
Testez-le ici.
L'OP a précisé dans un commentaire que tout ensemble de caractères imprimables uniques est autorisé, donc je prends juste les caractères ASCII imprimables depuis le début (avec un espace dans le coin, à
!
côté et ainsi de suite).Si l'orientation peut changer entre les entrées paires et impaires (ce que je ne pense pas, mais c'est ce que fait la soumission GolfScript), je peux le faire en 25 octets:
L'idée est vraiment simple: commencez par une grille contenant un espace, puis N-1 fois le transposez et doublez toutes les lignes avec le caractère suivant.
Pour la version longue, à la fin je transpose également à nouveau N-1 fois afin de garantir une orientation cohérente.
la source