Table des matières
7-8 Typographie de style ancien
Titre original:
Les anciens Chinois écrivaient les mots verticalement, de droite à gauche. Cette question vous demande d'écrire un programme pour formater un morceau de texte dans un style ancien.
Format d'entrée :
L'entrée est donnée sous la forme d'un entier positif N (<100) sur la première ligne , qui correspond au nombre de caractères dans chaque colonne. La deuxième ligne donne une chaîne non vide d'une longueur n'excédant pas 1000, se terminant par un retour chariot.
Format de sortie:
Formatez la chaîne donnée dans un style ancien, avec N caractères par colonne (sauf la dernière colonne, qui peut être inférieure à N ).
.
Idées de résolution de problèmes :
- Lecture et stockage des entrées : En utilisant
readline
le module, j'ai créé un objet d'interfacerl
puis écouté'line'
l'événement pour stocker chaque ligne d'entrée dans un tableaubuf
. De cette façon, vous pouvez obtenir le numéro de ligne et la chaîne d’entrée. La première ligne d'entrée est le nombre de lignesn
et la deuxième ligne est la chaîne à trier. - Créer un tableau bidimensionnel : Un tableau bidimensionnel d'une taille de 100x100
Array.from
est créé via la méthode .arr
Rempli avec 0 (pas le caractère « 0 ») lors de l'initialisation, utilisé pour stocker des chaînes disposées en zigzag. - Stockez les chaînes dans une disposition en forme de Z : parcourez la chaîne d'entrée à travers une boucle
str
et stockez les caractères un par un dans un tableau bidimensionnel dans l'ordrearr
. Après chaque stockage, la valeur de la somme estrow
mise à jour pour représenter l'index de la ligne courante et l'index de la colonne courante. Lorsqu'il est égal au nombre de lignes , cela signifie que la fin d'une colonne est atteinte et qu'il faut passer à la colonne suivante pour le stockage.rol
row
rol
row
n
- Résultat de sortie : parcourez le tableau bidimensionnel à travers deux boucles imbriquées
arr
, de la première ligne à la dernière ligne, de la dernière colonne à la première colonne, dans un ordre en zigzag. Si l'élément du tableau est 0, le caractère espace est affiché, sinon le caractère est affiché.process.stdout.write()
Sortie caractère par caractère.
.
Code JavaScript (nœud) :
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
});
let buf = [];
rl.on('line', (input) => {
buf.push(input);
});
rl.on('close', () => {
let n = parseInt(buf[0]);
let str = buf[1];
const arr = Array.from({
length: 100 }, () => Array(100).fill(0))
let row = 0, rol = 0
for (let i = 0; i < str.length; i++) {
arr[row++][rol] = str[i]
if (row == n && i < str.length - 1) {
rol++
row = 0
}
}
for (let i = 0; i < n; i++) {
for (let j = rol; j >= 0; j--) {
if (arr[i][j] === 0) {
process.stdout.write(" ")
} else {
process.stdout.write(arr[i][j])
}
}
console.log();
}
});
.