AtCoder dwango Programmierwettbewerb B zum Lösen in Ruby, Perl und Java B.

Einführung

Dieses Thema

Das Thema dieser Zeit ist Aggregation durch Reduzieren Ruby Beispielsweise wird die Zeichenfolge "1251251252525" in "25" -> "a" konvertiert, um das Zählen von Zeichen zu vereinfachen. => 1a1a1aaa Die Anzahl der aufeinanderfolgenden "a" ist (1, 1, 3), also addieren Sie die Anzahl der Kombinationen für jede.

bit.rb


s = gets.chomp

s.gsub!(/25/, 'a')
p = []
c = 0
0.upto(s.size - 1) do |i|
  if s[i] == 'a'
    c += 1
  elsif c > 0
    p.push(c)
    c = 0
  end
  p.push(c) if i == s.size - 1 && c > 0
end
sum = 0
0.upto(p.size - 1) do |i|
  sum += (1..p[i]).reduce{|a, b| a + b}
end
puts sum

reduce.rb


  sum += (1..p[i]).reduce{|a, b| a + b}
  sum += (1..p[i]).reduce(&:+)
  sum += (1..p[i]).inject(:+)
  sum += (1..p[i]).sum

Der Reduktionsteil kann entweder injiziert oder summiert werden (Rubin 2.4 oder höher). ** Nachtrag ** "Reduzieren (&: +)" aus den Kommentaren hinzugefügt.

Perl

perl.pl


use v5.18; # strict say state
use List::Util qw/reduce/;

chomp (my $s = <STDIN>);
$s =~ s/25/a/g;
my $c = 0;
my @p;
for my $i (0..length($s)-1) {
  if (substr($s, $i, 1) eq 'a') {
    $c++;
  } elsif ($c > 0) {
    push @p, $c;
    $c = 0;
  }
  if ($i == length($s)-1 && $c > 0) {
    push @p, $c;
  }
}
my $sum = 0;
for my $i (0..$#p) {
  $sum += reduce {$a + $b} 1..$p[$i];
}
say $sum;

reduce.pl


use List::Util qw/reduce sum/;

  $sum += reduce {$a + $b} 1..$p[$i];
  $sum += sum(1..$p[$i]);

Der Reduktionsteil kann auch Summe sein. Java

java.java


import java.util.*;
import java.util.stream.IntStream;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        sc.close();
        s = s.replace("25", "a");
        List<Integer> p = new ArrayList<>();
        int c = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.substring(i, i + 1).equals("a")) {
                c++;
            } else if (c > 0) {
                p.add(c);
                c = 0;
            }
            if (i == s.length() - 1 && c > 0) {
                p.add(c);
            }
        }
        int sum = 0;
        for (int i = 0; i < p.size(); i++) {
            sum += IntStream.rangeClosed(1, p.get(i)).reduce(0, (a, b) -> a + b);
        }
        System.out.println(sum);
    }
}

reduce.java


            sum += IntStream.rangeClosed(1, p.get(i)).reduce(0, (a, b) -> a + b);
            sum += IntStream.rangeClosed(1, p.get(i)).sum();

Der Reduktionsteil kann auch Summe sein.

Ruby Perl Java
Codelänge 284 Byte 411 Byte 847 Byte
Ausführungszeit 34 ms 28 ms 284 ms
Erinnerung 4092 KB 2816 KB 33228 KB

Zusammenfassung

Referenzierte Site

Recommended Posts

AtCoder dwango Programmierwettbewerb B zum Lösen in Ruby, Perl und Java B.
Lösen mit Ruby, Perl und Java AtCoder ABC 113 C Referenz
AtCoder ARC 081 C-Hash, der in Ruby, Perl und Java gelöst werden muss
AtCoder ABC 111 C Hash-Sortierung In Ruby, Perl und Java gelöst
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 2) Dynamische Planungsmethode
Lösen mit Ruby, Perl und Java AtCoder ABC 128 C.
Löse den AtCoder-Anfängerwettbewerb 151 mit Java
Löse den AtCoder Beginner Contest 150 mit Java
Löse den AtCoder-Anfängerwettbewerb 153 mit Java
Löse den AtCoder-Anfängerwettbewerb 175 mit Java
Löse den AtCoder-Anfängerwettbewerb 152 mit Java
Löse den AtCoder-Anfängerwettbewerb 156 mit Java
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 1)
AtCoder ABC 136 D Suche nach Breitenpriorität Gelöst in Ruby, Perl und Java
AtCoder Anfängerwettbewerb 169 A, B, C mit Rubin
Einschränkungsprogrammierung in Java
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
Java-Programmierung (Variablen und Daten)
[Java] Grundbegriffe der Programmierung
Ruby mit AtCoder 6 lernen [Contest 168 Daher]
Beispiel für Codierung und Decodierung in Java
StringBuffer- und StringBuilder-Klasse in Java
Schreiben Sie Schlüssel und Werte in Ruby
Verstehe gleich und hashCode in Java
AtCoder Anfängerwettbewerb 167 C Problem (Java)
Hallo Welt in Java und Gradle
Lassen Sie uns darüber nachdenken, was deklarative Programmierung in Java und Elm ist (Teil 1).
Ich habe EX25 des AtCoder Programming Guide für Anfänger (APG4b) in Java geschrieben.
Verwenden Sie OpenCV_Contrib (ArUco) mit Java! (Teil 2-Programmierung)
Unterschied zwischen final und Immutable in Java
Blasensortierung durchführen und mit Ruby sortieren auswählen
Ruby mit AtCoder 7 lernen [Contest 168 Triple Dots]
Java-Programmierung (Klassen und Instanzen, Hauptmethoden)
Java-Programmierung (statische Klausel und "Klassenvariablen")
[Ruby] Schleifenunterscheidung und Verwendung in Ruby
Unterschied zwischen "|| =" und "instance_variable_defined?" Im Ruby-Memo
Unterschied zwischen Arrylist und verknüpfter Liste in Java
Programmieren Sie PDF-Kopf- und Fußzeilen in Java
Lernen Sie Flyweight-Muster und ConcurrentHashMap in Java
Die Richtung von Java in "C ++ Design and Evolution"
Von Java nach C und von C nach Java in Android Studio
Lesen und Schreiben von GZIP-Dateien in Java
Unterschied zwischen int und Integer in Java
diverta 2019 Programmierwettbewerb A & B & C & D.
Diskriminierung von Enum in Java 7 und höher