[PYTHON] Memorandum / Memo über Programmieren Lern- / Wettbewerbsprogrammierungsseite

Einführung

In letzter Zeit sind die folgenden Programmierlern- / Wettbewerbsprogrammierungsseiten populär geworden.

Deshalb habe ich es ein wenig versucht, also werde ich ein Memorandum machen und notieren, was ich recherchiert und studiert habe.

Verarbeitung zum Speichern von numerischen Standardeingabezeichenfolgen in einem mehrdimensionalen Array

Verarbeitung zum Speichern jeder Eingabezeile in einem Array wie unten gezeigt.

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]

Wenn Sie dies tun können, können Sie mit diesem Array verschiedene Dinge tun.

C Sprachprogramm

#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];
  
  /*Erster Standardeingang*/
  scanf("%s", input_string);
  len = strlen(input_string);
  
  for(count1 = 0; count1 < len; count1++){
    /*Führen Sie ab dem zweiten Mal hier eine Standardeingabe durch*/
    if(count1 > 0){
      scanf("%s", input_string);
    }
    for(count2 = 0; count2 < len; count2++){
      /*Aus ASCII-Buchstaben"0"(0x30)Sie können den Wert durch Subtrahieren erhalten.*/
      g_map[count1][count2] = input_string[count2] - '0';
    }
  }
  
  /*Anzeige*/
  for(count1 = 0; count1 < len; count1++){
    for(count2 = 0; count2 < len; count2++){
      printf("%d", g_map[count1][count2]);
    }
    printf("\n");
  }
  
  return 0;
}

Bei Verwendung eines dynamischen Arrays Ist das vielseitiger?

#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];

  /*Erster Standardeingang*/
  scanf("%s", input_string);
  len = strlen(input_string);

  /*Dynamische Array-Zuordnung*/
  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++){
    /*Führen Sie ab dem zweiten Mal hier eine Standardeingabe durch*/
    if(count1 > 0){
      scanf("%s", input_string);
    }
    for(count2 = 0; count2 < len; count2++){
      /*Aus ASCII-Buchstaben"0"(0x30)Sie können den Wert durch Subtrahieren erhalten.*/
      g_map[count1][count2] = input_string[count2] - '0';
    }
  }

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

  return 0;
}

C ++ - Programm

#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();
    
    /*Dynamische Größenänderung mithilfe der Größenänderungsfunktion*/
    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;
    }

    //Dies ist nicht erforderlich, da der Löschvorgang im Destruktor ausgeführt wird.

    return 0;
}

Python3-Programm

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])
    
    #Anzeige
    for count1 in range(0, length):
        for count2 in range(0, length):
            print(map_data[count1][count2], end='')
        print("")

Gemeinsames Lisp-Programm

(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)))
    ;;Anzeige
    (dotimes (count1 str-length)
      (dotimes (count2 str-length)
        (format t "~d" (aref map-data count1 count2)))
      (format t "~%"))))

Java-Programm

import java.util.*;

class Main{
    /*Ständige Erklärung*/
    public static final int MAX_ROW = 1000;
    public static final int MAX_COL = 1000;
    
    /*Hauptfunktion*/
    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';
            }
        }
        
        /*Anzeige*/
        for(count1 = 0; count1 < len; count1++){
            for(count2 = 0; count2 < len; count2++){
                System.out.print(question[count1][count2]);
            }
            System.out.println("");
        }
    }
}

C # -Programm

using System.IO;
using System;

class Program
{
    /*Konstante Definition*/
    public const int MAX_ROW = 1000;
    public const int MAX_COL = 1000;
    
    /*Hauptfunktion*/
    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';
            }
        }
        
        /*Anzeige*/
        for(count1 = 0; count1 < len; count1++){
            for(count2 = 0; count2 < len; count2++){
                Console.Write(question[count1, count2]);
            }
            Console.WriteLine("");
        }
    }
}

Ruby-Programm

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
    
    #Anzeige
    (0..length).each do |count1|
        (0..length).each do |count2|
            print map_data[count1][count2]
        end
        puts ""
    end
end

Schließlich

Ich habe ein Programm in 5 verschiedenen Sprachen geschrieben (C-Sprache, Python3, CommonLisp, Java, C #). (Ich denke, es gibt einen besseren Weg, es zu schreiben ...) Dies ist ein vorbereitendes Programm zum Vorbereiten der Daten vor dem Schreiben des Algorithmus. Eigentlich werden wir das Problem mit den Daten lösen, die von hier aus im Array gespeichert sind. Diesmal war es ein Array, aber es gibt verschiedene andere Datenstrukturen wie Listen, Warteschlangen, Stapel und Hashes. Es wäre also schön, wenn Sie eine entsprechend Ihrem Problem auswählen könnten.

Recommended Posts

Memorandum / Memo über Programmieren Lern- / Wettbewerbsprogrammierungsseite
LPIC201 Studiennotiz
Erfahren Sie mehr über das Programmieren
Django Lernnotiz
Deep Learning Memorandum
Python-Lernseite
[Memo] Maschinelles Lernen
Memorandum über die Validierung
Python-Klasse (Python-Lernnotiz ⑦)
Python-Modul (Python-Lernnotiz ④)
Maschinelles Lernen Über Overlearning
Zusammenfassung der Programmierstudie
[Python] Memo über Funktionen
Ein Memorandum über Nan.
Programmieren des Lernprotokolls 2. Tag
[Python] Memo Über Fehler
Memo zum Kurs für maschinelles Lernen
Wettbewerbsfähige Programmierung mit Python
Memorandum zum Bau einer Kolbenstelle