Ce défi est un simple défi de l'art ASCII inspiré de l' éclipse solaire survenue le 21 août 2017. Étant donné une entrée 0 <= n <= 4
, sortez l'étape correspondante de l'éclipse décrite ci-dessous:
n=0:
*****
** **
* *
* *
** **
*******
n=1:
*****
** *****
* *******
* *******
** ******
*******
n=2:
*****
*********
***********
***********
***********
*******
n=3:
*****
***** **
******* *
******* *
****** **
*******
n=4:
*****
** **
* *
* *
** **
*******
Règles
- Vous pouvez 0 ou 1 index, indiquez ce que vous avez choisi.
- Les caractères utilisés sont l'espace et
*
vous pouvez utiliser n'importe quel caractère imprimable pour*
(autre que l'espace). - Les espaces de fin sont facultatifs (vous pouvez ou non les avoir).
- C'est le golf de code , le nombre d'octets le plus bas est le gagnant.
*
" ... y compris l'espace? ;)Réponses:
Python 2 ,
161149142 142135 octetsEssayez-le en ligne!
-7 merci à M. Xcoder .
la source
Fusain ,
82815543 octets-38 octets grâce à Neil!
Essayez-le en ligne! Le lien est vers la version détaillée.
Je l'ai fait pour le plaisir. : P
Je vais probablement me faire distancer de 40 octets.2638 octets ... Assez proche?la source
PolygonHollow
. : P 2) Ohh, bien. Merci!Gomme de cannelle , 70 octets
Hexdump:
Essayez-le en ligne!
J'attends depuis si longtemps pour savoir comment utiliser cette langue. : P
Donc, Cinnamon Gum est Bubblegum, mais c'est plus une "vraie" langue que Bubblegum.
Le premier octet (
l
) définit le mode en mode dictionnaire. Le reste des octets est la chaîne suivante compressée.Cela fait essentiellement une table de recherche avec chaque texte affecté à un numéro. Le programme prend ensuite en entrée et sort le texte respectif.
la source
argument%4
ouargument&3
enregistrer des octets?JavaScript (ES6),
103102 octetsEdit: 1 octet enregistré grâce à @darrylyeo.
la source
*666777333*\n
dans une variable.SOGL V0.12 ,
4039 octetsEssayez-le ici!
la source
VI, 108 octets
<CR>
est leEnter
coup,<C-?>
correspond àControl + ?
, et<Esc>
àEscape
évidemment. Chacun d'entre eux compte pour 1 octet (voir méta ). Les sauts de ligne dans la solution sont pour la lisibilité. Ne<CR>
représente que de vraisEnter
coups.Contribution
Le fichier d'entrée ne doit contenir qu'un seul caractère, représentant
n
.lancement
Le VI doit être démarré comme:
Explications
Il y a 3 parties dans la solution. Je décrirai d'abord la 2e partie (2e ligne), car elle est la plus simple à expliquer.
Dessiner le soleil
La commande pour dessiner le soleil est:
Le soleil doit être établi avec
,
*
,0
,1
et3
, comme celui - ci:Une symétrie aurait aidé à réduire la taille en octets de cette partie, mais ce n'est pas si important. Je n'expliquerai pas la ligne complète, mais le motif
*****
est utilisé pour générer facilement la dernière ligne, et le motif**1110333**
a été pris comme référence pour générer les 3 autres lignes contenant0
,1
et3
.Il est important de l'utiliser
0
,1
et3
pour les pièces solaires qui peuvent être remplies (voir explications suivantes). Dessiner ce soleil prend 55 octets et peut probablement être joué au golf avec quelques astuces.Remplir le soleil selon
n
Pour bien remplir le soleil, les instructions à suivre sont les suivantes:
n = 0
, alors0
,1
et3
(tous les chiffres) doivent être remplacés parn = 1
, alors1
doit être remplacé par, les autres chiffres avec
*
n = 2
, alors0
,1
et3
(tous les chiffres) doivent être remplacés par*
n = 3
, alors3
doit être remplacé par, les autres chiffres avec
*
n = 4
, alors0
,1
et3
(tous les chiffres) doivent être remplacés par(comme
n = 0
)On peut en déduire que les substitutions requises sont:
( première substitution )
*
( deuxième substitution )Notez que "certains chiffres" peuvent signifier "pas de chiffres" (
n = 2
par exemple). Et "tous les autres chiffres" peuvent également représenter "pas de chiffres", si tous les chiffres ont déjà été remplacés par la première substitution (n = 0
par exemple).La deuxième substitution peut être facilement écrite en 11 octets :
La première substitution dépend
n
, donc nous devons d'abord calculer quels chiffres vont être remplacés. Si les caractères remplacés sont stockés dans le registrea
, la commande de substitution est également écrite en 11 octets :<C-r>a
est remplacé par le contenu du registrea
lorsque la commande est tapée.Pour calculer la valeur de
a
, en suivant les instructions précédentes, l'algorithme est (en pseudo-code):"X"
chaîne est utilisée car quandn = 2
, aucun chiffre n'est remplacé par des espaces. Toute chaîne qui n'est pas le soleil peut être utilisée ici, tant que la première substitution ne fait rien.Cela pourrait être écrit en 31 octets :
Solution
Mettez toutes ces pièces dans le bon ordre, et vous avez la solution:
la source
PHP, 114 + 1 octets
+1 octet pour
-R
. Merci @Neil pour l'astuce changeante.utilise le soulignement pour
*
, indexé 0. Exécuter en tant que pipe avec-nR
ou l' essayer en ligne .Nécessite PHP 5.5 ou version ultérieure: l'
ancien PHP ne comprend pas l'indexation de chaînes littérales (erreur d'analyse);
PHP 7.1 se plaint des valeurs non numériques (remplacez
+$c
par$c>0
pour corriger).la source
" _"[$c*2>>$argn&1]
évite les paramètres de décalage négatifs si vous en avez besoin.Python 2 ,
170169 octetsEssayez-le en ligne!
la source
Python 2 , 181 octets
Essayez-le en ligne!
Approche très naïve,
travaillant sur golfin 'nvm.la source
Java 8,
225213211 octetsEssayez-le ici.
la source
05AB1E , 46 octets
Essayez-le en ligne!
la source