Résolution de problèmes Pintia - 7-8 composition de style ancien

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 :

  1. Lecture et stockage des entrées : En utilisant readlinele module, j'ai créé un objet d'interface rlpuis écouté 'line'l'événement pour stocker chaque ligne d'entrée dans un tableau buf. 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 lignes net la deuxième ligne est la chaîne à trier.
  2. Créer un tableau bidimensionnel : Un tableau bidimensionnel d'une taille de 100x100 Array.fromest créé via la méthode . arrRempli avec 0 (pas le caractère « 0 ») lors de l'initialisation, utilisé pour stocker des chaînes disposées en zigzag.
  3. Stockez les chaînes dans une disposition en forme de Z : parcourez la chaîne d'entrée à travers une boucle stret stockez les caractères un par un dans un tableau bidimensionnel dans l'ordre arr. Après chaque stockage, la valeur de la somme est rowmise à 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.rolrowrolrown
  4. 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();
    }
});

.

Analyse de complexité :

Complexité temporelle : O(n+m)
Complexité spatiale : O(n+m)

Guess you like

Origin blog.csdn.net/Mredust/article/details/133518830