introduction
Pour faire court: il y a quelques jours, j'ai accidentellement commencé à tricoter une chaussette et la structure assez logique des points unis me conduit à l'idée: pourquoi ne pas simplement tricoter une chaussette en ASCII?
Contribution
L'entrée est un entier pair N dans la plage [2,30]
.
Production
La sortie est une chaussette, évidemment.
Structure
Parce que nous n'utiliserons que des points simples, vous n'utiliserez que v
pour un point vers le bas et >
pour un point à droite. Permettez-moi d'expliquer la structure complète avec un exemple pour N=8
:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- Le premier bloc est la partie supérieure. Il a la largeur
N
et la hauteurN*1.5
- Ensuite, le talon commence. Vous soustrayez un
v
par ligne du côté droit jusqu'à ce que vous ayezN/2
comme largeur. Ensuite, vous ajoutez desN/2
lignes avec la largeur enN/2
dessous pour terminer les tricots vers le bas. Notez qu'il donne un total deN/2 + 1
lignes avec la largeurN/2
première partie:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- Maintenant, les tricots latéraux commencent. Vous commencez avec la première rangée réduite, remplissez
>
jusqu'à ce que vous ayez la largeurN
et ajoutez deux autres. Continuez ce processus, y compris la première ligne avecN/2
largeur - Remplissez les lignes au- dessous de ce niveau et ajouter les
N*1.5
temps>
à ce - Laissez les parties extérieures telles quelles et ajoutez sur la rangée sous la première et sur le lase deux autres
>'s
jusqu'à ce qu'elle soit terminée
deuxième partie:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
Règles
Les nouvelles lignes de fin sont correctes.
Vous pouvez choisir entre majuscules ou minuscules, V
mais cela doit être cohérent.
Il s'agit de code-golf, donc le code le plus court en octets l'emporte.
Cas de test
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
v
ouV
interchangeable? Je vais supposer pour le moment quev
c'est le seul autorisé, mais autoriserV
affectera le nombre d'octetsRéponses:
Pyth - 93 octets
Explication:
Vous pouvez l'essayer ici!
la source
Mathematica, 104 octets
Fonction sans nom prenant un entier pair positif en entrée et renvoyant une chaîne (avec un retour à la ligne de fin). Notez que la nouvelle ligne entre les deux lignes de code ci-dessus fait partie du code. Le travail principal est effectué par la fonction
c
, dont la définition non golféecrée un tableau de listes, chacune composée de plusieurs
"v"
s dans une ligne suivie de plusieurs">"
s suivis d'une nouvelle ligne. Heureusement, la plage#3
pour l'extérieurTable
peut avoir un nom de variable, auquel on peut faire référence dans les expressions#1
et#2
; cela permet à la fonctionc
d'être appelée avec des arguments constants et variables. Le reste n'est que du calcul, et l'opérateur de jonction de chaîne""<>
aplatit les listes imbriquées qui apparaissent gratuitement.la source
Python, 3,5
183177 octetsExplication entrante.
Essayez-le en ligne!
la source
n,v=int(input()),'v'
? Ensuite, cela ne sauve rien.Groovy, 168 octets
Il s'agit d'une fermeture sans nom. L'approche est complètement similaire à ma réponse Python 3.5 .
Essayez-le en ligne!
la source
Lot, 279 octets
Remarque: la deuxième ligne se termine dans un espace. Le lot a des problèmes d'écho
>
s dans les variables, je dois donc a) utiliser un substitut b) appeler un sous-programme pour faire écho à la chaîne corrigée. En fait, j'ai trois sous-programmes:a
est utilisé pour le talon. Unv
est supprimé à chaque fois et trois>
s sont ajoutés. Deux supplémentaires>
s sont ajoutés afin que le sous-programme puisse passer à travers leb
sous - programme.b
est utilisé pour le bas du pied. Deux>
s sont supprimés à chaque fois. Le sous-programme tombe ensuite dans lec
sous - programme.c
imprime la ligne actuelle de la chaussette, en remplaçant le caractère d'espace réservé pour que les>
s s'impriment correctement.La quatrième ligne gère la largeur de la jambe tandis que la cinquième ligne gère sa longueur. La septième ligne gère la longueur du pied tandis que la huitième ligne gère la moitié supérieure de la hauteur du pied en ajoutant deux
>>
à chaque ligne après l'avoir imprimée. Cela fonctionne pour les tailles de chaussettes qui sont des multiples de 4, et un ajustement est effectué pour les autres tailles de chaussettes afin que la ligne la plus longue ne se répète pas.la source
PHP, 229 octets
une approche assez paresseuse
imprime une nouvelle ligne de premier plan. Courez avec
-nr
.panne
la source
dc , 269 octets
Très bien, c'est énorme . Ce n'était pas facile, je vais vous dire beaucoup de choses, avec toutes les références de registre, les comparaisons, les macros, le manque de capacités de manipulation de chaînes, etc. Néanmoins, je me suis amusé à mettre cela ensemble, et c'est tout ce qui compte vraiment, non ? ;)
Essayez-le en ligne!
la source