Résolution avec Ruby, Perl, Java et Python AtCoder ABC 107 B Manipulation de chaînes

introduction

Ce thème

AtCoder Beginner Contest 107 B - Grid Compression Difficulty: 434

Ce thème, opération de chaîne de caractères Ruby

ruby.rb


h, w = gets.split.map(&:to_i)
a = []
h.times do |i|
  s = gets.chomp
  a.push(s) if s.index('#')
end
(w - 1).downto(0) do |i|
  if a.all?{|x| x[i] == '.'}
    a.each do |x|
      x[i] = ''
    end
  end
end
puts a

count.rb


  a.push(s) if s.count('.') != w
  a.push(s) if s.index('#')
  a.push(s) if s.contain?('#')

La méthode count, la méthode ʻindex, la méthode contain` et d'autres expressions régulières sont également OK.

index.rb


      x[i] = ''

Pour * Ruby *, vous pouvez remplacer directement les caractères spécifiés dans l'index. ** Addenda ** J'ai examiné le code à partir des commentaires que j'ai reçus. Python

python.py


h, w = map(int, input().split())
a = []
for i in range(h):
    s = input()
    if s.count('.') != w:
        a.append(s)
b = []
for i in range(w):
    f = True
    for x in a:
        if x[i] != '.':
            f = False
    if f:
        b.append(i)
for x in a:
    for i in range(len(x)):
        f = True
        for j in b:
            if i == j:
                f = False
        if f:
            print(x[i], end='')
    print()

find.py


    if s.count('.') != w:
    if s.find('#') == -1:

Vous pouvez également utiliser la méthode find.

perl.pl


chomp (my ($h, $w) = split / /, <STDIN>);
my @a;
for my $i (1..$h) {
  chomp (my $s = <STDIN>);
  if (scalar(grep {$_ eq '.'} (split '', $s)) != $w) {
    push @a, $s;
  }
}
for my $i (1..$w) {
  my $f = 1;
  for my $x (@a) {
    $f = 0 if substr($x, $w - $i, 1) ne '.';
  }
  if ($f) {
    for my $x (@a) {
      substr($x, $w - $i, 1) = '';
    }
  }
}
for my $x (@a) {
  print "$x\n";
}

grep.pl


  if (scalar(grep {$_ eq '.'} (split '', $s)) != $w) {
  if (index($s, '#') == -1) {

ʻIndex` est également OK. Java

java.java


import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int h = Integer.parseInt(sc.next());
        int w = Integer.parseInt(sc.next());
        List<String> a = new ArrayList<>();
        for (int i = 0; i < h; i++) {
            String s = sc.next();
            if (s.contains("#")) {
                a.add(s);
            }
        }
        sc.close();
        List<Integer> b = new ArrayList<>();
        for (int i = 0; i < w; i++) {
            boolean f = false;
            for (String x : a) {
                if (x.charAt(i) == '#') {
                    f = true;
                    break;
                }
            }
            if (f) {
                b.add(i);
            }
        }
        for (String x : a) {
            for (int i = 0; i < w; i++) {
                if (b.contains(i))
                    System.out.print(x.charAt(i));
            }
            System.out.println();
        }
    }
}

contains.java


            if (s.contains("#")) {

Il ne semble pas y avoir de moyen facile de compter le nombre de ., donc j'utilise la méthode contains. ** Addenda ** Dans la section des commentaires, j'ai eu l'idée de «diviser» avec «.». De plus, j'ai reçu un commentaire disant que «charAt» est meilleur que «substring», j'ai donc modifié le code.

Ruby Python Perl Java
Longueur du code 226 Byte 457 Byte 410 Byte 1042 Byte
Temps d'exécution 9 ms 35 ms 5 ms 219 ms
Mémoire 1788 KB 4468 KB 512 KB 25032 KB

Résumé

Recommended Posts

Résolution avec Ruby, Perl, Java et Python AtCoder ABC 107 B Manipulation de chaînes
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 B
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 065 C-th power
Résolution avec Ruby, Perl, Java et Python AtCoder Diverta 2019 Concours de programmation Manipulation de chaînes C
AtCoder ABC 165 D Floor Function résolue en Ruby, Perl, Java et Python
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 131 D Tri des tableaux
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 A
Manipulation de chaîne C AtCoder ABC110 à résoudre dans Ruby
Résolution avec Ruby, Python et numpy AtCoder ABC054 B Calcul de la matrice
Résolution avec Ruby, Perl, Java et Python AtCoder AGC 033 A Recherche de priorité de largeur
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 098 C Somme cumulative
Résolution avec Ruby, Perl, Java et Python AtCoder CADDi 2018 C factorisation premier
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 047 C Expression régulière
Résolution avec Ruby et Python AtCoder ABC151 D Recherche de priorité de largeur
Résolution avec Ruby et Python AtCoder ABC011 C Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC153 E Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC138 D Liste adjacente
Résolution en Ruby, Python et Java AtCoder ABC141 D Priority Queue
AtCoder ARC104 B Somme cumulative résolue en Ruby, Python et Java
Résolution avec Ruby, Python et networkx AtCoder ABC168 D Liste adjacente
Résolution avec Ruby et Python AtCoder ABC057 C Décomposition du facteur premier Recherche complète de bits
Résolution avec Ruby et Python AtCoder CODE FESTIVAL 2016 qual C B Priority Queue
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 066 C Hash carré itératif
Résolution avec Ruby et Python AtCoder ARC 059 C Méthode du carré minimum
Résolution avec Ruby et Python AtCoder ABC133 D Somme cumulée
Résolution avec Ruby et Python AtCoder AISING2020 D Méthode carrée itérative
Résolution avec Ruby et Python AtCoder ARC067 C factorisation premier
Résolution avec Ruby et Python AtCoder Tenka1 Programmer Contest C Somme cumulative
Résoudre avec Ruby et Python AtCoder ABC084 D Somme cumulative des nombres premiers
[Explication AtCoder] Contrôle ABC180 Problèmes A, B, C avec Python!
[Explication AtCoder] Contrôle ABC158 Problèmes A, B, C avec Python!
AtCoder ABC168 Une expression de cas résolue en Ruby et Python
[Explication AtCoder] Contrôle ABC164 Problèmes A, B, C avec Python!
[Explication AtCoder] Contrôle ABC168 Problèmes A, B, C avec Python!
Résolu AtCoder ABC 114 C-755 avec Python3
AtCoder JSC2019 Qual B à résoudre par Ruby et Python
Répertorier les chaînes de fractionnement et de jointure avec fractionnement et jointure (Perl / PowerShell / Java / Kotlin / Python)
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
Résoudre AtCoder ABC168 avec python (A ~ D)
Crypter avec Ruby (Rails) et décrypter avec Python
Scraping Web facile avec Python et Ruby
AtCoder ABC130 D Dichotomie de la somme cumulée résolue par Ruby et Python
Résolution avec Ruby et Python AtCoder ABC172 C Dichotomie de somme cumulée
AtCoder Beginner Contest 170 B Problème Explication "Crane and Turtle" (Python3, C ++, Java)
[Explication AtCoder] Contrôle ABC184 Problèmes A, B, C avec Python!
[AtCoder] Résoudre un problème de ABC101 ~ 169 avec Python
MessagePack-Try pour lier Java et Python avec RPC
AtCoder ABC 174 Python
[Explication AtCoder] Contrôlez les problèmes A, B, (C), D de ABC165 avec Python!
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC183 avec Python!
Résolution du modèle Lorenz 96 avec Julia et Python
Défiez AtCoder (ABC) 164 avec Python! Un problème ~ C
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC181 avec Python!
AtCoder ABC 175 Python