J'ai vu cela dans un défi PHP. L'objectif est de faire un échiquier de 64 cases (8 * 8) avec le minimum de code. Assez simple, j'ai fait le mien en PHP en 356 octets (pas impressionnant, je sais) et j'aimerais voir d'autres approches. Cela peut être fait dans la langue de votre choix, tant que vous le gardez vanille, donc pas d'importations. Le plus petit nombre d'octets gagne.
La sortie devrait ressembler à ceci:
Et mon code:
<table><?php
$c='black';function p($c,$n){echo'<td style="width:50px;height:50px;background:'.$c.'"></td>';if($n==1){echo"<tr>";}}for($i=1;$i<=64;$i++){if($i%8==0&&$c=="black"){$c="white";$n=1;}elseif($i%8==0&&$c=="white"){$c="black";$n=1;}elseif(isset($n)&&$n==1){$n=0;}elseif($c=="black"){$n=0;$c="white";}elseif($c=="white"){$n=0;$c="black";}p($c,$n);}
Ou lisible:
<table><tr>
<?php
$color = 'black';
function printcolor($color, $nl) {
echo '<td style="width:50px; height:50px; background:' . $color . '"></td>';
if ($nl == true) {
echo "</tr><tr>";
}
}
for ($i=1; $i<=64;$i++) {
if ($i % 8 == 0 && $color == "black") {
$color = "white";
$nl = true;
} elseif ($i % 8 == 0 && $color == "white") {
$color = "black";
$nl = true;
} elseif (isset($nl) && $nl == true) {
$nl = false;
} elseif ($color == "black") {
$nl = false;
$color = "white";
}
elseif ($color == "white") {
$nl = false;
$color = "black";
}
printcolor($color, $nl);
}
Modifier:
Désolé, je n'étais pas très précis au début:
- Les carrés doivent avoir 50px * 50px sauf pour les images vectorielles.
- Le format ou la taille de sortie n'est pas pertinent ni ne doit être une image.
- À des fins d'évaluation, la sortie doit être visible, comme dans un fichier image ou une capture d'écran
- Aucune bibliothèque écrite après la publication du défi
Réponses:
Octave,
2018 octetsMerci à @Bruno d' avoir rasé 2 octets.
Résultat:
Cette réponse utilise une technique trouvée ici . Il repose également sur la mise à l'échelle automatique des images dans Octave en fonction de la taille de la fenêtre de la figure.
la source
vim,
47464443barré 44 est toujours régulier 44 ...
Sorties au format NetPPM (PBM):
la source
<C-p>
en vim sans avoir commencé à taper un mot ... c'est vraiment pratique!CSS, 244 octets
Afficher l'extrait de code
Explication: Un dégradé linéaire diagonal de 100x100px est créé avec quatre arrêts de sorte que la plupart du dégradé est transparent à l'exception de deux coins triangulaires de 50px. (Voir l'extrait ci-dessous). L'ajout d'un deuxième dégradé avec un décalage de 50x50px remplit les moitiés manquantes des carrés. L'augmentation de la taille du corps permet ensuite au motif résultant de se répéter pour remplir tout l'échiquier.
Afficher l'extrait de code
la source
}
.html{background:#fff}
? Par défaut, 99% des navigateurs définissent l'arrière-plan sur blanc, afaikMathematica, 34 octets
La sortie est une image vectorielle et est entourée d'un cadre.
Au lieu de positionner correctement 32 rectangles, nous pouvons simplement générer une matrice binaire et
ArrayPlot
travailler pour nous:la source
GenerateChessBoardWithColorsAsParameters[ColorBlack, ColorWhite, 8, 8, 50, 50]
ça ne marche pas? ;)Mathematica,
817255 octetsL'image est une évaluation d'une version précédente, mais reste toujours la même.
la source
Octave, 48 octets
Cela fonctionne exactement de la même manière que ma réponse Matlab , mais il n'y
spiral
en a pas dans Octave. Au lieu de cela, nous utilisons une fonctionnalité que Matlab n'a pas: nous pouvons utiliser l'affectation det
déjà comme expression, puis utiliser ultérieurementt
nouveau dans la même expression.(Ceci est la version redimensionnée, je ne veux pas encombrer les réponses ici =)
la source
Pure Bash (pas d'utilitaires externes), 133
J'ai vu le commentaire de @ Doorknob comme un peu un défi. C'est un peu long, mais voici:
La sortie est au format .txt d'Imagemagick . Notez que c'est du pur Bash. Ni Imagemagick ni aucun autre utilitaire externe ne sont générés pour générer cette sortie. Cependant, la sortie peut être redirigée vers un fichier .txt et affichée avec l'
display
utilitaire ImageMagick :Ce format d'image est agréable car non seulement il s'agit de texte pur, il n'est guère plus qu'une liste de tous les pixels (x, y et valeur de couleur), un par ligne. Il est assez simple de dériver arithmétiquement toutes les valeurs de pixels dans une grande boucle.
Réponse précédente, 167
La sortie est au format de fichier image texte X_PixMap , qui peut également être visualisée avec ImageMagick
display
utilitaire .Notez que j'ai retiré autant du format XPM que possible, ce qui
display
l'accepterait toujours. J'ai pu retirer tout le passe-partout c à l'exception des"
guillemets doubles autour de chaque ligne. Aucune idée des autres utilitaires - le cas échéant - qui accepteront cela.la source
Navigateur PowerShell + de votre choix,
149143 octetsL'incapacité à utiliser les importations est vraiment difficile, car tous les appels GDI (c'est-à-dire les éléments que PowerShell utilise pour dessiner) sont enfouis derrière les importations dans .NET ...
Modifier - économisé six octets grâce à @NotThatCharles
Cela utilise deux boucles for
1..8
pour générer une chaîne HTML big-ol ', similaire à l'exemple PHP fourni, et la sortir sur le pipeline. Chaque fois, nous calculons s'il faut ajouter;background:#000
les fonds noirs en prenant notre position actuelle sur la carte modulo 2.Pour l'utiliser, redirigez la sortie dans le fichier de votre choix (par exemple, avec quelque chose comme
> chessboard.htm
), puis lancez-le dans le navigateur de votre choix. Pour la capture d'écran ci-dessous, j'ai utilisé "c.htm" et Firefox.la source
white
etblack
peut être#fff
et#000
... mais pourquoi s'embêter à spécifier du blanc?(";background:#000","")[($a+$_)%2]
place.PHP + CSS + HTML, 136 octets
Amener la table à un niveau supérieur:
Il génère le code suivant:
Il s'appuie fortement sur la gentillesse des navigateurs et CSS.
la source
++$i<9
par@++$i<9
. De plus, pour que cela fonctionne sans<?php
, il faut avoir la directiveshort_open_tags=On
, qui est par défaut sur certains environnements. En savoir plus sur stackoverflow.com/a/2185331/2729937Gelée, 26 octets
Étant donné que Jelly ne prend pas en charge les images intégrées, nous imprimons une image PPM.
Essayez-le en ligne!(planche plus petite pour la vitesse, PPM brut)
Résultats
Comment ça marche
Version non concurrente (24 octets)
Le nouvel interprète Jelly antérieur à ce post ne s'est pas
x
correctement vectorisé . Avec la dernière version, 2 octets supplémentaires peuvent être enregistrés.La seule différence est que cela
x50
donne une liste plate (avec chaque élément d'origine répété 50 fois), ilF
n'est donc plus nécessaire.la source
;
...;)MATL , 11 (27) octets
Cela produit la figure suivante. Il n'a pas de taille intrinsèque; il est automatiquement mis à l'échelle en fonction de la taille de la fenêtre de la figure. Cela semble être permis par le défi.
Explication
Si la mise à l'échelle automatique n'est pas autorisée:
produit la figure suivante avec des carrés de 50x50 pixels
Explication
la source
Pyth,
2826 octetsExplication
Équivalent Python
Essayez-le ici (juste les valeurs de couleur)
Sortie:
la source
Matlab, 47 (24) octets
Cela fonctionne exactement de la même manière que ma réponse Octave , mais j'ai pu utiliser
spiral
ce qui a sauvé un octet.spiral(n)
fait unenxn
matrice et la remplit en spirale avec le premiern^2
entiers.Si les graphiques vectoriels sont autorisés, nous pourrions le faire en 24 octets:
(Ceci est la version redimensionnée, je ne veux pas encombrer les réponses ici =)
la source
FFmpeg, 78
82 100octetsJ'ai enfin pu nettoyer la planche.
Plus vieux :
Quittera avec erreur, mais après avoir produit l'image ci-dessous.
(le conseil a ramassé de la poussière)
la source
CJam, 27 octets
Essayez-le en ligne! (planche plus petite pour la vitesse, PPM brut)
Résultats
Comment ça marche
la source
HTML avec utf-8 - 66b
▚ est utf court-direct pour l'entité & # 9626;
Caractère Unicode 'QUADRANT SUPÉRIEUR GAUCHE ET INFÉRIEUR DROIT' (U + 259A)
idiot, je cherchais une solution de 1 utf-8 chars - aurait été ... 1b!
la source
▞
place de sorte que le carré en haut à gauche soit blanc comme sur un échiquier standard. Utilisez également<pre>
au lieu de<div>
pour utiliser des sauts de ligne à la place de<br>
.▚
compte pour 3 octets en utilisant le codage UTF-8. À l'avenir, vous pouvez utiliser ce pour vérifier votre UTF-8 Nombre d' octetsPHP,
166158155 octetsFonctionne en PHP 7.0.2 (raccourcis activés) et Chrome 48.0.2564.97 m
la source
bgcolor=0
pour générer l'arrière-plan noir. Cela devrait raser une tonne d'octets! Et au lieu de$v%2==0
, utilisez$v&1
, qui devrait raser quelques octets.PHP> = 5.4,
175159149116 octetsRemarques
la source
<table><tr><?php for(;++$i<65;){echo'<td style="width:50px;height:50px;background:#'.(($i+$m)%2?'000':'').'"></td>';if($i%8<1){echo"</tr><tr>";$m=!$m;}}
TR
.++$i<65
par@++$i<65
, car vous êtes préoccupé par les avertissements. Cela signifie que vous pouvez réduire$m=$i=0
à juste$m=0
, vous économisant 2 octets. Au lieu de celaecho 'a'.'b'.'c';
, vous pouvez le faireecho 'a','b','c';
. Cela signifie que vousecho
pouvezecho'<td style="width:50px;height:50px;background:#',($i+$m)%2?'':'000','">';
économiser plus de 2 octets. De plus, les attributs HTML ne nécessitent pas de guillemets. Retirez-les et sabrez 2 octets. De plus, il y a unbgcolor
attribut beaucoup plus court , qui réduit plus d'octets! Vous pouvez utiliser unprint()
dans lefor
pour économiser encore plus d'octets!($i+$m)%2
par$i+@$m&1
, ce qui m'a permis de supprimer cela$m=0
. Devant, j'ai pu retirer le vôtreif
et le remplacer par une opération trénaire. Pour économiser encore plus , j'ai supprimé votrestyle
et ajouté les propriétéswidth
etheight
. Pour aller encore plus loin dans le côté hacky, j'ai pensé que Chrome 48.0.2564.103 m utilise du noir si la couleur d'arrière-plan est0
, en utilisant la propriétébgcolor
. Cela m'a permis de réduire toujours plus! Plus de réductions, c'est mieux!JavaScript, 150
Cela peut certainement être joué au golf. Il crée du HTML.
la source
iKe , 24 octets
Le cœur de la technique consiste à générer une liste de coordonnées x, à les diviser et à prendre ensuite un produit croisé d'égalité pour générer un bitmap approprié. Utilisation d'exemples plus petits à des fins d'illustration:
essayez-le ici . Techniquement, iKe fonctionne sur un canevas logique de 160 x 160 pixels, mais en mode plein écran (par défaut lorsque vous suivez un lien enregistré), celui-ci est augmenté de 3 fois. Je pense que cela suit toujours l'esprit de la question, car le programme pourrait assembler un bitmap beaucoup plus grand avec le même nombre de caractères; cela revient à une limitation d'affichage arbitraire.
Mise à jour:
iKe n'est pas principalement conçu pour le golf, mais le codage en direct bénéficie toujours de la brièveté et des valeurs par défaut saines. À la suite de bricolage avec ce problème, j'ai décidé de lui permettre d'utiliser une palette par défaut si aucune n'est fournie. Cette solution particulière pourrait désormais s'exprimer avec:
Enregistrement (non éligible) de 3 octets.
la source
Rubis avec des chaussures, 97 caractères
Exemple de sortie:
la source
Lua + LÖVE,
138113112106 caractèresExemple de sortie:
la source
//
opérateur de division entier, mais apparemment il n'y a toujours pas de LÖVE construit avec un LuaJIT le mettant en vedette. ☹GIMP, 539 octets
Script-fu Schéma non golfé:
En mode batch, créez une image vierge, créez une sélection rectangulaire 50x50, remplissez-la, puis déplacez-la à plusieurs reprises autour de l'image, en remplissant des carrés. Ensuite, enregistrez
c.png
et quittez.Sortie:
la source
J,
3331 octetsJ'ai utilisé un truc avec binaire.
... parce que 43605 en binaire est 1010101001010101 (nous utilisons une
#:
primitive pour l'obtenir). Primitive$
façonne ce tableau de chiffres binaires en une matrice spécifiée avec les dimensions8 8
. Et ceviewmat
n'est qu'une bibliothèque système.La fenêtre est entièrement redimensionnable.
Merci à @FrownyFrog de l'avoir raccourci pour:
la source
viewmat 8$#:170 85
est 1 octet plus courtviewmat#:8$170 85
Excel VBA, 82 octets
Fonction de fenêtre immédiate VBE anonyme qui ne prend aucune entrée et génère un damier sur la plage
A1:H8
de l'objet ActiveSheetCette fonction fonctionne en créant d'abord 4 colonnes noires dans la plage
B1:B8,D1:D8,F1:F8,H1:H8
, puis en décalant la coloration des lignes2,4,6 and 8
vers la gauche d'une cellule.Exemple de sortie
la source
Perl 5 - 80
Génère un fichier .PBM:
la source
PowerShell + GDI, 346 octets
(les nouvelles lignes comptent comme les points-virgules, donc les nouvelles lignes pour la lisibilité)
Contrairement à mon autre réponse , celle-ci utilise les assemblys .NET pour appeler GDI + appels de fonction . Fait intéressant, c'est environ le double de la longueur.
Les deux premières lignes chargent le
System.Windows.Forms
etSystem.Drawing
assemblages . Le premier est utilisé pour la fenêtre littérale et le canevas sur celui-ci, le second est utilisé pour l'objet de dessin (dans ce code, un pinceau) qui crée les graphiques sur le canevas.Nous créons ensuite notre formulaire
$f
avec la ligne suivante et définissons sonwidth
etheight
être450
. Notez que ce n'est pas50*8
, car ces chiffres correspondent au bord de bordure à bordure de la fenêtre des formulaires, y compris la barre de titre, le bouton de fermeture, etc.La ligne suivante crée notre canevas
$g
en appelant le constructeur vide. Par défaut, la partie supérieure gauche de la zone non système du formulaire est égale à0,0
et augmente vers la droite et vers le bas, parfait pour nos besoins.La ligne suivante est l'appel réel qui dessine les graphiques, avec
$f.add_paint({...})
. Nous construisons les appels graphiques en double-for en boucle à partir0..7
et en transportant une variable d'assistance à$y
travers chaque boucle externe. A chaque boucle intérieure, nous demandons à notre toile.FillRectangle(...,...)
de dessiner nos carrés. Le premier paramètre construit un nouveauSolidBrush
avec une couleur basée sur où nous en sommes au tableau. D' autres options ici pourrait être une trappe, un gradient, etc. Le second paramètre est un nouvelRectangle
objet à partir des x spécifiées$_*50
et les$y*50
coordonnées et l' extension pour50
chaque direction. N'oubliez pas que0,0
c'est en haut à gauche.La dernière ligne affiche simplement la sortie avec
.showDialog()
.Notez que puisque nous créons un objet de formulaire et que PowerShell concerne le pipeline, la fermeture du formulaire contextuel passera le long d'un
System.Enum.DialogResult
objet deCancel
, car c'est techniquement ce que l'utilisateur a fait. Puisque nous ne capturons pas ou ne faisons rien avec ce résultat, le motCancel
sera affiché sur STDOUT à la fin du programme, car il a été laissé sur le pipeline.la source
SÉLECTIONNER. ,
88448278 octetsBien sûr, c'est long, mais les deux premières versions que j'ai générées pour cette tâche étaient deux fois plus longues.
Sortie:
Comment ça marche:
Voici le programme utilisé pour le générer:
En d'autres termes, boucle n de 0 à 63, dessinant un carré à (n% 8-4) + (n // 8-4) i si (-1) ^ (n // 8 + n% 8) n'est pas positif.
la source
JavaScript (ES6), 147
la source
Python, 57 octets
c
est une ligne de 50 pixels blancs et 50 pixels noirs,200*c
est une ligne avec un blanc à l'avant,200*c[::-1]
l'inverse.Sortie en PPM, utilisation:
la source