introduction
Vous jouez à un jeu d'association, dans lequel des pièces sont insérées en haut et tombent vers le bas (sur la pièce du haut) en raison de la gravité.
Donc ça
O <- inserting this coin
OO O
OOOOO
deviendra ceci
O
OO O
OOOOO
Imaginez maintenant que quelqu'un tourne le plateau dans le sens des aiguilles d'une montre. Les événements suivants se produiront:
1. La planche est tournée
OOO
OO
O
OO
O
2. Les pièces tombent à cause de la gravité
O
O
OO
OO
OOO
Ta tâche
Votre tâche consiste à simuler la rotation de la carte en écrivant un programme ou une fonction. Par souci de simplicité, nous n'avons affaire qu'à un seul type de pièce (ce n'est pas un jeu d'association trop excitant, n'est-ce pas…). Vous pouvez supposer que la gravité n'est appliquée qu'une fois la rotation terminée. La planche est tournée dans le sens horaire.
Contribution
L'entrée va être une chaîne qui contient 3 types de caractères:
- O (o majuscule) OU 0 (zéro) - une pièce (vous décidez laquelle prend en charge votre solution)
- (espace) - un champ vide
- \ n (nouvelle ligne) - fin de ligne
L'entrée représente l'état de la carte. Vous pouvez supposer que l'entrée est bien formée et contient un état valide de la carte (aucune pièce ne flotte). L'entrée peut être un paramètre de fonction, ou peut être lue à partir de l'entrée standard ou d'un fichier.
Production
La sortie est le nouvel état de la carte après rotation. La sortie contient les 3 mêmes types de caractères que l'entrée. La sortie peut être renvoyée par votre fonction ou peut être écrite dans la sortie standard ou dans un fichier.
Échantillon
Input1:
O
OO O
OOOOO
Sortie1:
O
O
OO
OO
OOO
Input2:
O O
O O
Sortie2:
OO
OO
Vous pouvez utiliser n'importe quelle langue et la bibliothèque standard de la langue choisie. Le programme le plus court en octets gagne.
la source
Réponses:
GolfScript,
1412 caractèresL'entrée doit être donnée sur STDIN, le caractère pour les pièces peut être n'importe quel caractère non blanc. Essayez ici . Merci à Peter d'avoir signalé une réduction de deux caractères.
la source
transpose
Ruby qui peut gérer des tableaux de différentes longueurs ...([nil]*a.map(&:size).max).zip(*a)
. Pas bon pour le golf.-1%
par$
." "
.Javascript (E6) 103
Essayez d'abord les opérations matricielles. Chaque ligne de la chaîne d'entrée doit être complétée.
Assez verbeux.
Pseudo code
la source
[...x]
auparavant. Comment appelle-t-on ceci?spread
[ developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Ruby 2.0, 59 caractères
Entrée via stdin, suppose que les lignes ont toutes la même longueur. C'est probablement beaucoup plus long que nécessaire. Mais au moins c'est lisible ...
la source
$<.map
place.1..-1
), je sélectionne simplement 50 lignes en commençant par la seconde (1,50
).J -
493124 octetsJe pense qu'il pourrait y avoir des rotations inutiles, mais sinon cela fonctionne bien. C'est une fonction qui prend l'entrée comme spécifié, les pièces étant
O
. Aucun espace de fin n'est requis dans l'entrée.Nouvelle version, inspirée de la réponse Javascript d' edc65 :
Explication:
Ancienne version:
Explication:
Exemples (notez que les chaînes multilignes commencent par
0 : 0
et se terminent par un crochet):la source
Haskell - 86
J'apprends juste, donc je suis sûr que cela peut être amélioré.
Exemple d'entrée:
Exemple de sortie:
la source
Python 2 (69)
(79)Prend l'entrée remplie d'espaces afin que toutes les lignes aient une longueur égale. Le
split
crée un arrat de chaque ligne. Lezip
transpose efficacement le tableau. Ensuite,sorted
trie les tuples dans l'ordre lexicographique, ce qui fait tomber toutes les pièces au fond. Enfin, nous imprimons chaque ligne, la transformant en chaîne, bien que nous devions d'abord l'inverser. Faireprint'O'*c.count('O')
est équivalent et utilise le même nombre de caractères.Exemple d'exécution:
la source
C,
167119 octetsCette version plus courte est (malheureusement?) Beaucoup plus claire que l'original également.
la source
Raquette: 130
Il vous faut remplir avec des espaces pour que les lignes soient égales en longueur.
la source
C # -
209174 octetsBon, je dois essayer ce golf Code à un moment donné, je pense. Création d'une fonction (r) qui fait pivoter la carte et l'imprime. Je suppose que je triche un peu quand j'imprime mon tableau de caractères, mais si vous ne pouvez pas comprendre pourquoi vous ne devriez pas être fou :)
Merci à ProgramFOX pour les conseils :)
Tricher
la source
char[]
ety
réduira le nombre de caractères à 192 caractères. De plus, il n'est pas vraiment nécessaire de fournir le mot-cléstatic
lors de la publication d'une réponse ici. Le supprimer réduira votre nombre de personnages à 185 caractères.