[PYTHON] Mémorandum / mémo sur le site de programmation d'apprentissage / de programmation

introduction

Récemment, les sites de programmation d'apprentissage / de compétition suivants sont devenus populaires.

C'est pourquoi j'ai essayé un peu, donc je vais faire un mémorandum et noter ce que j'ai recherché et étudié.

Traitement pour stocker des chaînes de caractères numériques d'entrée standard dans un tableau multidimensionnel

Traitement pour stocker chaque ligne d'entrée dans un tableau comme indiqué ci-dessous.

123 => arr[0][0]、arr[0][1]、arr[0][2]
456 => arr[1][0]、arr[1][1]、arr[1][2]
789 => arr[2][0]、arr[2][1]、arr[2][2]

Si vous pouvez faire cela, vous pouvez faire différentes choses en utilisant ce tableau.

Programme de langage C

#include <stdio.h>
#include <string.h>

#define MAX_ROW 1000
#define MAX_COL 1000

static int g_map[MAX_ROW][MAX_COL];

int main(int argc, char** argv){
  int count1, count2, len;
  char input_string[MAX_ROW];
  
  /*Première entrée standard*/
  scanf("%s", input_string);
  len = strlen(input_string);
  
  for(count1 = 0; count1 < len; count1++){
    /*À partir de la deuxième fois, effectuez une saisie standard ici*/
    if(count1 > 0){
      scanf("%s", input_string);
    }
    for(count2 = 0; count2 < len; count2++){
      /*À partir de lettres ASCII"0"(0x30)Vous pouvez obtenir la valeur en soustrayant.*/
      g_map[count1][count2] = input_string[count2] - '0';
    }
  }
  
  /*afficher*/
  for(count1 = 0; count1 < len; count1++){
    for(count2 = 0; count2 < len; count2++){
      printf("%d", g_map[count1][count2]);
    }
    printf("\n");
  }
  
  return 0;
}

Lors de l'utilisation d'un tableau dynamique Est-ce que celui-ci est plus polyvalent?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define INPUT_STRING_LEN 1000

int **g_map;

int main(int argc, char** argv){
  int count1, count2, len;
  char input_string[INPUT_STRING_LEN];

  /*Première entrée standard*/
  scanf("%s", input_string);
  len = strlen(input_string);

  /*Allocation dynamique des baies*/
  g_map = malloc(sizeof(int *) * len);
  for (int i = 0; i < len; i++) {
    g_map[i] = malloc(sizeof(int) * len);
  }
  
  for(count1 = 0; count1 < len; count1++){
    /*À partir de la deuxième fois, effectuez une saisie standard ici*/
    if(count1 > 0){
      scanf("%s", input_string);
    }
    for(count2 = 0; count2 < len; count2++){
      /*À partir de lettres ASCII"0"(0x30)Vous pouvez obtenir la valeur en soustrayant.*/
      g_map[count1][count2] = input_string[count2] - '0';
    }
  }

  /*afficher*/
  for(count1 = 0; count1 < len; count1++){
    for(count2 = 0; count2 < len; count2++){
      printf("%d", g_map[count1][count2]);
    }
    printf("\n");
  }
  
  /*Processus d'ouverture*/
  for (int i = 0; i < len; i++) {
    free(g_map[i]);
  }
  free(g_map);

  return 0;
}

Programme C ++

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main(int argc, char** argv){
    string      input_string;
    const char* c_string;
    int         length, count1, count2;
    vector< vector<int> > arr;
    
    cin >> input_string;
    length = input_string.size();
    
    /*Redimensionner dynamiquement à l'aide de la fonction de redimensionnement*/
    arr.resize(length);
    for(count1 = 0; count1 < length; count1++){
        arr[count1].resize(length);
    }
    
    for(count1 = 0; count1 < length; count1++){
        if(count1 > 0){
            cin >> input_string;
        }
        for(count2 = 0; count2 < length; count2++){
            c_string = input_string.c_str();
            arr[count1][count2] = c_string[count2] - '0';
        }
    }
    
    for(count1 = 0; count1 < length; count1++){
        for(count2 = 0; count2 < length; count2++){
            cout << arr[count1][count2];
        }
        cout << endl;
    }

    //Cela n'est pas nécessaire car le processus de suppression est effectué dans le destructeur.

    return 0;
}

Programme Python3

if __name__=="__main__":
    input_string = input()
    length = len(input_string)
    
    map_data = [[0 for i in range(length)] for j in range(length)]
    
    for count1 in range(0, length):
        if count1 > 0:
            input_string = input()
        for count2 in range(0, length):
            map_data[count1][count2] = int(input_string[count2])
    
    #afficher
    for count1 in range(0, length):
        for count2 in range(0, length):
            print(map_data[count1][count2], end='')
        print("")

Programme Common Lisp

(defun main ()
  (let (count1
        count2
        input-string
        str-length
        map-data)
    (setf input-string (read-line))
    (setf str-length (length input-string))
    (setf map-data (make-array `(,str-length ,str-length)))
    (dotimes (count1 str-length)
      (setf count2 0)
      (if (> count1 0)
          (setf input-string (read-line)))
      (loop :for char :across input-string
            :do (setf (aref map-data count1 count2) (digit-char-p char))
                (incf count2)))
    ;;afficher
    (dotimes (count1 str-length)
      (dotimes (count2 str-length)
        (format t "~d" (aref map-data count1 count2)))
      (format t "~%"))))

Programme Java

import java.util.*;

class Main{
    /*Déclaration constante*/
    public static final int MAX_ROW = 1000;
    public static final int MAX_COL = 1000;
    
    /*Fonction principale*/
    public static void main(String[]args){
        int question[][] = new int[MAX_ROW][MAX_COL];
        int count1, count2, len;
        String input_string;
        
        Scanner cin = new Scanner(System.in);
	
        input_string = cin.nextLine();
        len = input_string.length();
        
        for(count1 = 0; count1 < len; count1++){
            if(count1 > 0){
                input_string = cin.nextLine();
            }
            for(count2 = 0; count2 < len; count2++){
                question[count1][count2] = input_string.charAt(count2) - '0';
            }
        }
        
        /*afficher*/
        for(count1 = 0; count1 < len; count1++){
            for(count2 = 0; count2 < len; count2++){
                System.out.print(question[count1][count2]);
            }
            System.out.println("");
        }
    }
}

Programme C

using System.IO;
using System;

class Program
{
    /*Définition constante*/
    public const int MAX_ROW = 1000;
    public const int MAX_COL = 1000;
    
    /*Fonction principale*/
    static void Main()
    {
        int[,] question = new int[MAX_ROW, MAX_COL];
        int count1, count2, len;
        String input_string;
	
        input_string = Console.ReadLine();
        len = input_string.Length;
        
        for(count1 = 0; count1 < len; count1++){
            if(count1 > 0){
                input_string = Console.ReadLine();
            }
            for(count2 = 0; count2 < len; count2++){
                question[count1, count2] = input_string[count2] - '0';
            }
        }
        
        /*afficher*/
        for(count1 = 0; count1 < len; count1++){
            for(count2 = 0; count2 < len; count2++){
                Console.Write(question[count1, count2]);
            }
            Console.WriteLine("");
        }
    }
}

Programme Ruby

if __FILE__ == $0
    input_string = gets.chomp
    length = input_string.length - 1
    
    map_data = Array.new
    
    (0..length).each do |count1|
        if count1 > 0 then
            input_string = gets.chomp
        end
        map_data << input_string.split("").map(&:to_i)
    end
    
    #afficher
    (0..length).each do |count1|
        (0..length).each do |count2|
            print map_data[count1][count2]
        end
        puts ""
    end
end

finalement

J'ai écrit un programme dans 5 langages différents (langage C, Python3, CommonLisp, Java, C #). (Je pense qu'il y a une meilleure façon de l'écrire ...) Il s'agit d'un programme préparatoire pour préparer les données avant d'écrire l'algorithme. En fait, nous allons résoudre le problème en utilisant les données stockées dans le tableau à partir d'ici. Cette fois, c'était un tableau, mais il existe diverses autres structures de données telles que des listes, des files d'attente, des piles et des hachages, donc ce serait bien si vous pouviez en sélectionner une en fonction de votre problème.

Recommended Posts

Mémorandum / mémo sur le site de programmation d'apprentissage / de programmation
Note d'étude LPIC201
En savoir plus sur la programmation
Mémo d'apprentissage Django
Mémorandum d'apprentissage profond
Site d'apprentissage Python
[Memo] Apprentissage automatique
Mémorandum sur la validation
Classe Python (mémo d'apprentissage Python ⑦)
Module Python (mémo d'apprentissage Python ④)
Apprentissage automatique sur le surapprentissage
Résumé du site d'étude de programmation
[Python] Mémo sur les fonctions
Un mémorandum sur Nan.
Enregistrement d'apprentissage de la programmation 2ème jour
[Python] Mémo sur les erreurs
Mémo du cours d'apprentissage automatique
Programmation compétitive avec python
Mémorandum de construction du site Flask