On vous donne une grille rectangulaire des personnages .
et #
, comme ceci:
..........
..#.......
....#..#..
...#......
..........
Votre tâche consiste à remplir tout le cadre de délimitation aligné sur l'axe du #
avec #
:
..........
..######..
..######..
..######..
..........
Le cadre de délimitation aligné sur l'axe est le plus petit rectangle qui contient tous les #
.
Vouloir plus? Essayez la partie II!
Règles
Vous pouvez utiliser deux caractères ASCII imprimables distincts (0x20 à 0x7E, inclus), à la place de #
et .
. Je continuerai à me référer à eux au fur #
et .
à mesure du reste de la spécification.
L'entrée et la sortie peuvent être soit une chaîne séparée par un saut de ligne, soit une liste de chaînes (une pour chaque ligne), mais le format doit être cohérent.
Vous pouvez supposer que l'entrée contient au moins une #
et que toutes les lignes ont la même longueur.
Vous pouvez écrire un programme ou une fonction et utiliser l'une de nos méthodes standard de réception d'entrée et de sortie.
Vous pouvez utiliser n'importe quel langage de programmation , mais notez que ces failles sont interdites par défaut.
Il s'agit de code-golf , donc la réponse valide la plus courte - mesurée en octets - l'emporte.
Cas de test
Chaque scénario de test a une entrée et une sortie côte à côte.
# #
... ...
#.. #..
... ...
... ...
#.. ###
..# ###
.#. ###
#.. ###
..# ###
..... .....
.#.#. .###.
..... .....
... ...
.#. .#.
... .#.
.#. .#.
... ...
.......... ..........
.......... ..........
....#..... ....#.....
.......... ..........
.......... ..........
.......... ..........
....#..... ...##.....
...#...... ...##.....
.......... ..........
..#....... ..###.....
....#..... ..###.....
...#...... ..###.....
.......... ..........
..#....... ..######..
....#..#.. ..######..
...#...... ..######..
.........# ..########
..#....... ..########
....#..#.. ..########
...#...... ..########
Réponses:
VBA Excel,
150 octets146 octetsInstruction:
Créez un classeur avec deux feuilles de calcul vierges: feuille1 et feuille2. Définissez l'entrée dans Sheet1, puis placez le code suivant dans le module de code Sheet1
Déverrouillé le code:
Explication:
Exemple d'E / S:
Avertissement: assurez-vous que chaque cellule de la feuille Sheet2 est toujours vide à chaque exécution du programme.
la source
=C.Value
dans la première ligne="#"
?05AB1E ,
70686961586040 octetsExplication
Essayez-le en ligne
la source
Mathematica,
9170 octets21 octets enregistrés grâce à @MartinEnder .
Fonction anonyme. Prend une matrice de caractères en entrée et renvoie une matrice de caractères en sortie. Le caractère Unicode est U + F3C7 pour
\[Transpose]
.la source
C #,
262251 octetsVa jouer au golf plus loin quand j'aurai plus de temps.
Il se compile en un
Func<string[], string[]>
.Version formatée:
la source
Gelée ,
21191817 octetsCeci est un programme complet. L'entrée et la sortie sont des chaînes de 0 et de 1 , délimitées par des sauts de ligne.
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça fonctionne
la source
Rétine , 87 octets
Le nombre d'octets suppose un codage ISO 8859-1.
Utilise
A
pour.
etZ
pour#
.Essayez-le en ligne!
la source
Scala, 317 caractères
Une version plus lisible, aurait probablement pu jouer plus:
la source
JavaScript (ES6), 168 octets
Prend l'entrée comme une chaîne multiligne. Fonctionne en supprimant récursivement les
.
s de début et de fin de toutes les lignes jusqu'à ce qu'au moins une ligne commence et se termine par un#
, puis sélectionne autant de lignes que possible mais en commençant et en terminant sur les lignes contenant#
et en changeant tous les.
s en#
. Probablement facilement golfable.la source
R,
158155 octetsCe programme accepte les points d'entrée
.
et les hashtags#
, ligne par ligne.Non golfé:
Voici les détails de la troisième ligne:
la source
PowerShell v3 +,
215162148144139 139 octetsPrend l'entrée comme un tableau de chaînes
$n
, avec0
au lieu de.
et1
au lieu de#
. Ensuite, nous effectuons une boucle$n
, chaque itération testant si la chaîne actuelle est plus petite que0
(c'est-à-dire, il y a un1
), et si c'est le cas, sortons une chaîne. Utilise un pseudo-ternaire à la place d'une opérationif
/else
.La chaîne est construite à partir de boucles sur toute la largeur de la chaîne d'entrée. À chaque itération, nous clouons sur un
0
ou un1
selon que1
se trouve quelque part dans la colonne verticale correspondante. Pour le dernier cas de test, par exemple, cela se traduira par une chaîne comme0011001001
. Nécessite v3 + pour l'-in
opérateur. Cette chaîne est associée à un regex fantaisie-fantaisie pour remplacer tout "intérieur"0
par1
s. Un grand merci à Business Cat dans le chat pour l'aide à ce sujet. Notre chaîne serait0011111111
à ce stade.Sinon, affichez la chaîne actuelle (entièrement composée de zéros)
$_
.Les chaînes résultantes sont laissées sur le pipeline et la sortie est implicite. Le défaut
Write-Output
par pour un tableau de chaînes est avec une nouvelle ligne entre chaque élément, c'est donc visuellement ce qui se passe.Exemples
la source
Python,
219212 octets(Bien que je pense qu'une autre méthode pourrait être plus courte)
Prend et renvoie une liste de liste de caractères.
Testez-le sur ideoone
la source
Perl 6 , 62 octets
Une routine anonyme qui peut être passée un tableau de tableaux de caractères (représentant la matrice) comme argument, et le modifie en place afin que la portée appelante ait le tableau modifié par la suite.
Utilise
a
au lieu de#
comme le caractère "on". Le caractère "off" peut être n'importe quoi, il s'en fiche.la source
Python 3, 153 octets
L'entrée et la sortie sont une liste de chaînes.
non golfé
théorie du fonctionnement
L'idée principale est de supprimer les lignes et les colonnes autour de l'extérieur du tableau si elles n'ont pas de «#». Tout ce qui reste doit être rempli avec des «#».
Il est implémenté à l'aide d'une fonction récursive.
Cas 1: la ligne 0 ne contient pas de '#'. Le résultat est la ligne 0 + appel récursif sur les lignes restantes.
Cas 2: la ligne 0 contient un «#». Plus aucune ligne ne peut être supprimée. Faites pivoter le tableau cw de sorte que la colonne 0 soit maintenant la ligne 0. Traitez ensuite récursivement le tableau pivoté. Le résultat est tourné ccw.
Cas de base: le tableau a été tourné 4 fois, ce qui signifie que toutes les lignes / colonnes externes ont été supprimées si possible. Tout ce qui reste doit être rempli avec des «#»
la source
Perl, 51 octets
Comprend +2 pour
-0p
Donnez une entrée sur STDIN, le caractère est désactivé
A
, le caractère esta
, par exemple:bounding.pl
:Même longueur:
la source
Python 2, 184 octets
L'entrée et la sortie sont une liste de chaînes.
Essayez-le sur Ideone (fork de la page de test de Jonathan Allan)
la source
Pyth , 50 octets
Essayez-le en ligne!
la source