Dans ce défi, vous allez placer des lettres de l'alphabet dans un plan cartésien et produire le résultat sous forme de texte.
Votre saisie consistera en une liste de liste avec 3 paramètres:
- Coordonnée X
- Coordonnée Y
- Chaîne
Comment?
Nous savons qu'un plan cartésien contient 2 axes et 4 quadrants où les signes des coordonnées sont , , et . Par exemple
Considérez la matrice 3 x 3 suivante comme un plan cartésien
Si on nous donne en entrée quelque chose comme [[-1,1,L],[0,1,F]]
notre matrice ressemblera à quelque chose
Et la sortie finale LF
En plus de cela, nous devons suivre certains points pour obtenir la sortie correcte:
- Lorsqu'une coordonnée X, Y est répétée, vous devrez concaténer les chaînes. Exemple: supposons dans (-1,1) la chaîne
F
est placée et vous devez placer la chaînea
au même point. Vous concaténez les deux chaînes résultant enFa
et c'est la valeur qui ira dans (-1,1). - Votre sortie doit être cohérente avec la matrice. Exemple imaginez ceci comme votre résultat final:
Vous devez sortir
Ma rie
i s
cute
Pourquoi?
Vous pouvez le voir comme un tableau où les colonnes sont les valeurs de l'axe des x et les lignes de l'axe des y.
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma" | "r" | "ie"
Row 2 | "i" | "s" |
Row 3 | "cute" | |
Toutes les valeurs des colonnes doivent avoir la même longueur
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma " | "r" | "ie"
Row 2 | "i " | "s" |
Row 3 | "cute" | |
Enfin, nous sortons le résultat
Ma rie
i s
cute
Cas de test
Input
------------
[[3, 3, "c"]
[4, 1, "un"]
[5, 3, "e"]
[4, 3, "od"]
[4, 2, "lf"]
[1, 2, "go"]
[2, 1, "i"]
[2, 1, "s f"]]
Output
--------------
code
go lf
is f un
Input
--------------
[[0, 0, 's'],
[-1,1, 'M'],
[0, 1, 'r'],
[-1,1, 'a'],
[1, 1, 'i'],
[-1, 0, 'i'],
[1, 1, 'e'],
[-1,- 1, 'c'],
[-1,- 1, 'u'],
[-1, -1, 'te']]
Output.
----------------
Ma rie
i s
cute
Remarques
- C'est censé être code-golf
- Vous pouvez envelopper les coordonnées dans une seule liste, par exemple
[[3, 3], "c"]
- Vous pouvez prendre l'entrée dans n'importe quel format raisonnable
- Vous pouvez supposer qu'il n'y aura pas de nombre ou d'espaces vides uniquement dans l'entrée. Par exemple, il peut y avoir quelque chose comme
a a
mais jamais1
ou" "
ou1a
ou1 1
la source
a a
mais jamais1
ou `` ou1a
ou1 1
(int a,int b,string c)
:?Réponses:
JavaScript (ES8),
186180179 octets1 octet enregistré grâce à @Shaggy
Essayez-le en ligne!
Indices négatifs dans JS (ou leur absence)
Étant donné un tableau
A[]
, il est parfaitement légal dans JS de faire quelque chose commeA[-1] = 5
. Cependant, cela n'enregistrera pas la valeur dans le tableau lui-même. Au lieu de cela, il contraindra implicitement cet index négatif à une chaîne ("-1"
) et définira la propriété correspondante dans l' objet environnant du tableau.La mauvaise nouvelle est que les propriétés ne sont pas itérables avec des méthodes telles que
map()
:Essayez-le en ligne!
Le code ci-dessus s'affiche uniquement
3 is stored at index 1
.Une solution de contournement possible serait:
Essayez-le en ligne!
Mais:
Ce que nous faisons ici
Nous voulons vraiment travailler avec des valeurs positives des deuxX et y afin d'éviter les problèmes décrits ci-dessus.
Nous pourrions faire un premier passage sur les données, en recherchant la valeur minimale deX et la valeur minimale de y . Mais ce serait assez long.
Voici ce que nous faisons à la place:
la source
o
dans lesw
:w=[o=[]]
.Python 2 ,
188185181 181 octetsEssayez-le en ligne!
la source
APL (Dyalog Unicode) , 39 octets SBCS
Infixe anonyme lambda prenant * des listes de coordonnées et de chaînes comme arguments gauche et droit.
Essayez-le en ligne!
{
…}
"Dfn"; les arguments gauche (coordonnées) et droite (chaînes) sont⍺
et⍵
:⊂''
chaîne vide incluse, donc utilisez comme remplissage pour un tableau(
... de)⍴
manière cyclique r Eshape dans un tableau de dimensions suivantes:⌊/⍺
la valeur la plus basse le long de chaque axe des coordonnées⍺-
soustrayez cela de toutes les coordonnées1+
ajouter cela à un (puisque nous voulons la gamme inclusive)c←
Magasin àc
(pour c oordinates)⌈/
la valeur la plus élevée le long de chaque axe de ceux⊃
déballer pour utiliser comme dimensionsm←
stockerm
(pour m atrix)⍵⊣
jeter cela au profit des cordesm[c],←
ajouter ceux-ci auxm
coordonnéesc
m⊣
jeter ceux qui sont en faveur de l'amendementm
⌽
miroir↓
divisé en liste de listes de chaînes↑¨
mélanger chaque liste de chaînes dans une matrice de caractères, en remplissant les espaces,/
réduire par concaténation horizontale⊃
décompresser (puisque la réduction réduit le rang de 1 à 0)* Si la prise d'un seul argument de coordonnées et de chaînes entrelacées est requise, elle sera de 5 octets de plus.
la source
05AB1E ,
4544 octetsPrend les coordonnées d'entrée comme une liste intérieure.
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Charbon de bois , 60 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Extrayez les coordonnées de l'entrée.
Boucle sur les coordonnées x.
Boucle sur les coordonnées y, extrayant et concaténant toutes les chaînes aux coordonnées données.
Imprimez les chaînes dans l'ordre inverse car les coordonnées y sont inversées par rapport au système de coordonnées de Charcoal.
Passez au début de la colonne suivante.
la source
Perl 5
-p00
-MList::Util=max
, 148 octetsTIO
Comment
s/(\S+) (\S+) (.*) /
...;''/ge;
, les drapeaux de substitution évaluent la/g
boucle/e
, le remplacement est évalué comme entrée de ligne de compensation vide / variable par défaut$a{$1}=max$a{$1},length($h{$2}{$1}.=$3)
, active automatiquement une carte% h de carte dont le premier niveau définit ley
deuxième niveaux
et concatène la chaîne$3
à la valeur, obtient la longueur et active une deuxième carte% a dont les clésx
et la valeur maximale de la longueur sur la colonne (x
)for$y(sort{$b-$a}keys%h){
...;say""}
, pour les index des lignes$y
dans les clés de%h
tri numérique inversé,say""
à la fin pour imprimer une nouvelle lignemap{
...}sort{$a-$b}keys%a
, pour l'index des colonnes$_
dans les clés% a triées numériquementprintf"%-$a{$_}s",$h{$y}{$_}
, imprimer la chaîne alignée à gauche avec la largeur de la colonnela source
Nettoyer ,
212206 octetsEssayez-le en ligne!
la source