package day04

import java.io.File

fun main() {

    fun parseInput(input: String) = input
        .lines()
        .map {
            it.split(",")
                .map { s ->
                    s.split("-")
                }
                .map { (a, b) -> (a.toInt()..b.toInt()).toSet() }
        }

    fun part1(input: String): Int {
        val data = parseInput(input).fold(0) { acc: Int, (l1, l2) ->
            acc + if (l1.union(l2).size == l1.size || l2.union(l1).size == l2.size) 1 else 0
        }
        return data
    }

    fun part2(input: String): Int {
        val data = parseInput(input).fold(0) { acc: Int, (l1, l2) ->
            acc + if (l1.intersect(l2).isNotEmpty()) 1 else 0
        }
        return data
    }

    val testInput = File("src/day04/Day04_test.txt").readText()

    println(part1(testInput))
    println(part2(testInput))

    val input = File("src/day04/Day04.txt").readText()

    println(part1(input))
    println(part2(input))
}

Compiled from "Day04.kt"
public final class day04.Day04Kt {
  public static final void main();
    Code:
       0: new           #8                  // class java/io/File
       3: dup
       4: ldc           #10                 // String src/day04/Day04_test.txt
       6: invokespecial #14                 // Method java/io/File."<init>":(Ljava/lang/String;)V
       9: aconst_null
      10: iconst_1
      11: aconst_null
      12: invokestatic  #20                 // Method kotlin/io/FilesKt.readText$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String;
      15: astore_0
      16: aload_0
      17: invokestatic  #24                 // Method main$part1:(Ljava/lang/String;)I
      20: istore_1
      21: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;
      24: iload_1
      25: invokevirtual #36                 // Method java/io/PrintStream.println:(I)V
      28: aload_0
      29: invokestatic  #39                 // Method main$part2:(Ljava/lang/String;)I
      32: istore_1
      33: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;
      36: iload_1
      37: invokevirtual #36                 // Method java/io/PrintStream.println:(I)V
      40: new           #8                  // class java/io/File
      43: dup
      44: ldc           #41                 // String src/day04/Day04.txt
      46: invokespecial #14                 // Method java/io/File."<init>":(Ljava/lang/String;)V
      49: aconst_null
      50: iconst_1
      51: aconst_null
      52: invokestatic  #20                 // Method kotlin/io/FilesKt.readText$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String;
      55: astore_1
      56: aload_1
      57: invokestatic  #24                 // Method main$part1:(Ljava/lang/String;)I
      60: istore_2
      61: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;
      64: iload_2
      65: invokevirtual #36                 // Method java/io/PrintStream.println:(I)V
      68: aload_1
      69: invokestatic  #39                 // Method main$part2:(Ljava/lang/String;)I
      72: istore_2
      73: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;
      76: iload_2
      77: invokevirtual #36                 // Method java/io/PrintStream.println:(I)V
      80: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #47                 // Method main:()V
       3: return

  private static final java.util.List<java.util.List<java.util.Set<java.lang.Integer>>> main$parseInput(java.lang.String);
    Code:
       0: aload_0
       1: checkcast     #54                 // class java/lang/CharSequence
       4: invokestatic  #60                 // Method kotlin/text/StringsKt.lines:(Ljava/lang/CharSequence;)Ljava/util/List;
       7: checkcast     #62                 // class java/lang/Iterable
      10: astore_1
      11: nop
      12: iconst_0
      13: istore_2
      14: aload_1
      15: astore_3
      16: new           #64                 // class java/util/ArrayList
      19: dup
      20: aload_1
      21: bipush        10
      23: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      26: invokespecial #72                 // Method java/util/ArrayList."<init>":(I)V
      29: checkcast     #74                 // class java/util/Collection
      32: astore        4
      34: iconst_0
      35: istore        5
      37: aload_3
      38: invokeinterface #78,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      43: astore        6
      45: aload         6
      47: invokeinterface #84,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      52: ifeq          384
      55: aload         6
      57: invokeinterface #88,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      62: astore        7
      64: aload         4
      66: aload         7
      68: checkcast     #90                 // class java/lang/String
      71: astore        8
      73: astore        22
      75: iconst_0
      76: istore        9
      78: aload         8
      80: checkcast     #54                 // class java/lang/CharSequence
      83: iconst_1
      84: anewarray     #90                 // class java/lang/String
      87: astore        10
      89: aload         10
      91: iconst_0
      92: ldc           #92                 // String ,
      94: aastore
      95: aload         10
      97: iconst_0
      98: iconst_0
      99: bipush        6
     101: aconst_null
     102: invokestatic  #96                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     105: checkcast     #62                 // class java/lang/Iterable
     108: astore        10
     110: nop
     111: iconst_0
     112: istore        11
     114: aload         10
     116: astore        12
     118: new           #64                 // class java/util/ArrayList
     121: dup
     122: aload         10
     124: bipush        10
     126: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     129: invokespecial #72                 // Method java/util/ArrayList."<init>":(I)V
     132: checkcast     #74                 // class java/util/Collection
     135: astore        13
     137: iconst_0
     138: istore        14
     140: aload         12
     142: invokeinterface #78,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     147: astore        15
     149: aload         15
     151: invokeinterface #84,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     156: ifeq          221
     159: aload         15
     161: invokeinterface #88,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     166: astore        16
     168: aload         13
     170: aload         16
     172: checkcast     #90                 // class java/lang/String
     175: astore        17
     177: astore        18
     179: iconst_0
     180: istore        19
     182: aload         17
     184: checkcast     #54                 // class java/lang/CharSequence
     187: iconst_1
     188: anewarray     #90                 // class java/lang/String
     191: astore        20
     193: aload         20
     195: iconst_0
     196: ldc           #98                 // String -
     198: aastore
     199: aload         20
     201: iconst_0
     202: iconst_0
     203: bipush        6
     205: aconst_null
     206: invokestatic  #96                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     209: aload         18
     211: swap
     212: invokeinterface #102,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     217: pop
     218: goto          149
     221: aload         13
     223: checkcast     #104                // class java/util/List
     226: nop
     227: checkcast     #62                 // class java/lang/Iterable
     230: astore        10
     232: nop
     233: iconst_0
     234: istore        11
     236: aload         10
     238: astore        12
     240: new           #64                 // class java/util/ArrayList
     243: dup
     244: aload         10
     246: bipush        10
     248: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     251: invokespecial #72                 // Method java/util/ArrayList."<init>":(I)V
     254: checkcast     #74                 // class java/util/Collection
     257: astore        13
     259: iconst_0
     260: istore        14
     262: aload         12
     264: invokeinterface #78,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     269: astore        15
     271: aload         15
     273: invokeinterface #84,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     278: ifeq          365
     281: aload         15
     283: invokeinterface #88,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     288: astore        16
     290: aload         13
     292: aload         16
     294: checkcast     #104                // class java/util/List
     297: astore        17
     299: astore        18
     301: iconst_0
     302: istore        19
     304: aload         17
     306: iconst_0
     307: invokeinterface #108,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     312: checkcast     #90                 // class java/lang/String
     315: astore        20
     317: aload         17
     319: iconst_1
     320: invokeinterface #108,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     325: checkcast     #90                 // class java/lang/String
     328: astore        21
     330: new           #110                // class kotlin/ranges/IntRange
     333: dup
     334: aload         20
     336: invokestatic  #115                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     339: aload         21
     341: invokestatic  #115                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     344: invokespecial #118                // Method kotlin/ranges/IntRange."<init>":(II)V
     347: checkcast     #62                 // class java/lang/Iterable
     350: invokestatic  #122                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     353: aload         18
     355: swap
     356: invokeinterface #102,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     361: pop
     362: goto          271
     365: aload         13
     367: checkcast     #104                // class java/util/List
     370: nop
     371: nop
     372: aload         22
     374: swap
     375: invokeinterface #102,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     380: pop
     381: goto          45
     384: aload         4
     386: checkcast     #104                // class java/util/List
     389: nop
     390: areturn

  private static final int main$part1(java.lang.String);
    Code:
       0: aload_0
       1: invokestatic  #141                // Method main$parseInput:(Ljava/lang/String;)Ljava/util/List;
       4: checkcast     #62                 // class java/lang/Iterable
       7: astore_2
       8: iconst_0
       9: istore_3
      10: iconst_0
      11: istore        4
      13: iload_3
      14: istore        5
      16: aload_2
      17: invokeinterface #78,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      22: astore        6
      24: aload         6
      26: invokeinterface #84,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      31: ifeq          152
      34: aload         6
      36: invokeinterface #88,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      41: astore        7
      43: iload         5
      45: aload         7
      47: checkcast     #104                // class java/util/List
      50: astore        8
      52: istore        9
      54: iconst_0
      55: istore        10
      57: aload         8
      59: iconst_0
      60: invokeinterface #108,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      65: checkcast     #143                // class java/util/Set
      68: astore        11
      70: aload         8
      72: iconst_1
      73: invokeinterface #108,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      78: checkcast     #143                // class java/util/Set
      81: astore        12
      83: iload         9
      85: aload         11
      87: checkcast     #62                 // class java/lang/Iterable
      90: aload         12
      92: checkcast     #62                 // class java/lang/Iterable
      95: invokestatic  #147                // Method kotlin/collections/CollectionsKt.union:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/Set;
      98: invokeinterface #151,  1          // InterfaceMethod java/util/Set.size:()I
     103: aload         11
     105: invokeinterface #151,  1          // InterfaceMethod java/util/Set.size:()I
     110: if_icmpeq     141
     113: aload         12
     115: checkcast     #62                 // class java/lang/Iterable
     118: aload         11
     120: checkcast     #62                 // class java/lang/Iterable
     123: invokestatic  #147                // Method kotlin/collections/CollectionsKt.union:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/Set;
     126: invokeinterface #151,  1          // InterfaceMethod java/util/Set.size:()I
     131: aload         12
     133: invokeinterface #151,  1          // InterfaceMethod java/util/Set.size:()I
     138: if_icmpne     145
     141: iconst_1
     142: goto          146
     145: iconst_0
     146: iadd
     147: istore        5
     149: goto          24
     152: iload         5
     154: istore_1
     155: iload_1
     156: ireturn

  private static final int main$part2(java.lang.String);
    Code:
       0: aload_0
       1: invokestatic  #141                // Method main$parseInput:(Ljava/lang/String;)Ljava/util/List;
       4: checkcast     #62                 // class java/lang/Iterable
       7: astore_2
       8: iconst_0
       9: istore_3
      10: iconst_0
      11: istore        4
      13: iload_3
      14: istore        5
      16: aload_2
      17: invokeinterface #78,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      22: astore        6
      24: aload         6
      26: invokeinterface #84,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      31: ifeq          128
      34: aload         6
      36: invokeinterface #88,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      41: astore        7
      43: iload         5
      45: aload         7
      47: checkcast     #104                // class java/util/List
      50: astore        8
      52: istore        9
      54: iconst_0
      55: istore        10
      57: aload         8
      59: iconst_0
      60: invokeinterface #108,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      65: checkcast     #143                // class java/util/Set
      68: astore        11
      70: aload         8
      72: iconst_1
      73: invokeinterface #108,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      78: checkcast     #143                // class java/util/Set
      81: astore        12
      83: iload         9
      85: aload         11
      87: checkcast     #62                 // class java/lang/Iterable
      90: aload         12
      92: checkcast     #62                 // class java/lang/Iterable
      95: invokestatic  #165                // Method kotlin/collections/CollectionsKt.intersect:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/Set;
      98: checkcast     #74                 // class java/util/Collection
     101: invokeinterface #168,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     106: ifne          113
     109: iconst_1
     110: goto          114
     113: iconst_0
     114: ifeq          121
     117: iconst_1
     118: goto          122
     121: iconst_0
     122: iadd
     123: istore        5
     125: goto          24
     128: iload         5
     130: istore_1
     131: iload_1
     132: ireturn
}


package day03

import java.io.File

fun main() {

    fun Char.getPriorities(): Int = when {
        isLowerCase() -> code - 96
        isUpperCase() -> code - 38
        else -> 0
    }

    fun parseInput(input: String) = input.lines()

    fun part1(input: String): Int {
        val data = parseInput(input)
            .map {
                it.take(it.length / 2).toSet() to it.takeLast(it.length / 2).toSet()
            }
            .sumOf { (first, second) ->
                first.fold(0) { acc: Int, c ->
                    acc + if (second.contains(c)) c.getPriorities() else 0
                }
            }
        return data
    }

    fun part2(input: String): Int {
        val data = parseInput(input).chunked(3)
            .map { it.map { s -> s.toSet() } }
            .map { (a, b, c) -> Triple(a, b, c) }
            .sumOf { (a, b, c) ->
                a.fold(0) { acc: Int, char: Char ->
                    acc + if (b.contains(char) && c.contains(char)) char.getPriorities() else 0
                }
            }
        return data
    }

    val testInput = File("src/day03/Day03_test.txt").readText()

    println(part1(testInput))
    println(part2(testInput))

    val input = File("src/day03/Day03.txt").readText()

    println(part1(input))
    println(part2(input))
}

Compiled from "Day03.kt"
public final class day03.Day03Kt {
  public static final void main();
    Code:
       0: new           #8                  // class java/io/File
       3: dup
       4: ldc           #10                 // String src/day03/Day03_test.txt
       6: invokespecial #14                 // Method java/io/File."<init>":(Ljava/lang/String;)V
       9: aconst_null
      10: iconst_1
      11: aconst_null
      12: invokestatic  #20                 // Method kotlin/io/FilesKt.readText$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String;
      15: astore_0
      16: aload_0
      17: invokestatic  #24                 // Method main$part1:(Ljava/lang/String;)I
      20: istore_1
      21: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;
      24: iload_1
      25: invokevirtual #36                 // Method java/io/PrintStream.println:(I)V
      28: aload_0
      29: invokestatic  #39                 // Method main$part2:(Ljava/lang/String;)I
      32: istore_1
      33: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;
      36: iload_1
      37: invokevirtual #36                 // Method java/io/PrintStream.println:(I)V
      40: new           #8                  // class java/io/File
      43: dup
      44: ldc           #41                 // String src/day03/Day03.txt
      46: invokespecial #14                 // Method java/io/File."<init>":(Ljava/lang/String;)V
      49: aconst_null
      50: iconst_1
      51: aconst_null
      52: invokestatic  #20                 // Method kotlin/io/FilesKt.readText$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String;
      55: astore_1
      56: aload_1
      57: invokestatic  #24                 // Method main$part1:(Ljava/lang/String;)I
      60: istore_2
      61: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;
      64: iload_2
      65: invokevirtual #36                 // Method java/io/PrintStream.println:(I)V
      68: aload_1
      69: invokestatic  #39                 // Method main$part2:(Ljava/lang/String;)I
      72: istore_2
      73: getstatic     #30                 // Field java/lang/System.out:Ljava/io/PrintStream;
      76: iload_2
      77: invokevirtual #36                 // Method java/io/PrintStream.println:(I)V
      80: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #47                 // Method main:()V
       3: return

  private static final int main$getPriorities(char);
    Code:
       0: nop
       1: iload_0
       2: invokestatic  #57                 // Method java/lang/Character.isLowerCase:(C)Z
       5: ifeq          15
       8: iload_0
       9: bipush        96
      11: isub
      12: goto          30
      15: iload_0
      16: invokestatic  #60                 // Method java/lang/Character.isUpperCase:(C)Z
      19: ifeq          29
      22: iload_0
      23: bipush        38
      25: isub
      26: goto          30
      29: iconst_0
      30: ireturn

  private static final java.util.List<java.lang.String> main$parseInput(java.lang.String);
    Code:
       0: aload_0
       1: checkcast     #67                 // class java/lang/CharSequence
       4: invokestatic  #73                 // Method kotlin/text/StringsKt.lines:(Ljava/lang/CharSequence;)Ljava/util/List;
       7: areturn

  private static final int main$part1(java.lang.String);
    Code:
       0: aload_0
       1: invokestatic  #75                 // Method main$parseInput:(Ljava/lang/String;)Ljava/util/List;
       4: checkcast     #77                 // class java/lang/Iterable
       7: astore_2
       8: nop
       9: iconst_0
      10: istore_3
      11: aload_2
      12: astore        4
      14: new           #79                 // class java/util/ArrayList
      17: dup
      18: aload_2
      19: bipush        10
      21: invokestatic  #85                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      24: invokespecial #87                 // Method java/util/ArrayList."<init>":(I)V
      27: checkcast     #89                 // class java/util/Collection
      30: astore        5
      32: iconst_0
      33: istore        6
      35: aload         4
      37: invokeinterface #93,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      42: astore        7
      44: aload         7
      46: invokeinterface #99,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      51: ifeq          128
      54: aload         7
      56: invokeinterface #103,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      61: astore        8
      63: aload         5
      65: aload         8
      67: checkcast     #105                // class java/lang/String
      70: astore        9
      72: astore        19
      74: iconst_0
      75: istore        10
      77: aload         9
      79: aload         9
      81: invokevirtual #109                // Method java/lang/String.length:()I
      84: iconst_2
      85: idiv
      86: invokestatic  #113                // Method kotlin/text/StringsKt.take:(Ljava/lang/String;I)Ljava/lang/String;
      89: checkcast     #67                 // class java/lang/CharSequence
      92: invokestatic  #117                // Method kotlin/text/StringsKt.toSet:(Ljava/lang/CharSequence;)Ljava/util/Set;
      95: aload         9
      97: aload         9
      99: invokevirtual #109                // Method java/lang/String.length:()I
     102: iconst_2
     103: idiv
     104: invokestatic  #120                // Method kotlin/text/StringsKt.takeLast:(Ljava/lang/String;I)Ljava/lang/String;
     107: checkcast     #67                 // class java/lang/CharSequence
     110: invokestatic  #117                // Method kotlin/text/StringsKt.toSet:(Ljava/lang/CharSequence;)Ljava/util/Set;
     113: invokestatic  #126                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     116: aload         19
     118: swap
     119: invokeinterface #130,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     124: pop
     125: goto          44
     128: aload         5
     130: checkcast     #132                // class java/util/List
     133: nop
     134: checkcast     #77                 // class java/lang/Iterable
     137: astore_2
     138: iconst_0
     139: istore_3
     140: aload_2
     141: invokeinterface #93,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     146: astore        4
     148: aload         4
     150: invokeinterface #99,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     155: ifeq          308
     158: aload         4
     160: invokeinterface #103,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     165: astore        5
     167: iload_3
     168: aload         5
     170: checkcast     #134                // class kotlin/Pair
     173: astore        6
     175: istore        19
     177: iconst_0
     178: istore        7
     180: aload         6
     182: invokevirtual #137                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     185: checkcast     #139                // class java/util/Set
     188: astore        8
     190: aload         6
     192: invokevirtual #142                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     195: checkcast     #139                // class java/util/Set
     198: astore        9
     200: aload         8
     202: checkcast     #77                 // class java/lang/Iterable
     205: astore        10
     207: iconst_0
     208: istore        11
     210: iconst_0
     211: istore        12
     213: iload         11
     215: istore        13
     217: aload         10
     219: invokeinterface #93,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     224: astore        14
     226: aload         14
     228: invokeinterface #99,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     233: ifeq          294
     236: aload         14
     238: invokeinterface #103,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     243: astore        15
     245: iload         13
     247: aload         15
     249: checkcast     #53                 // class java/lang/Character
     252: invokevirtual #146                // Method java/lang/Character.charValue:()C
     255: istore        16
     257: istore        17
     259: iconst_0
     260: istore        18
     262: iload         17
     264: aload         9
     266: iload         16
     268: invokestatic  #150                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     271: invokeinterface #153,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     276: ifeq          287
     279: iload         16
     281: invokestatic  #155                // Method main$getPriorities:(C)I
     284: goto          288
     287: iconst_0
     288: iadd
     289: istore        13
     291: goto          226
     294: iload         13
     296: nop
     297: istore        20
     299: iload         19
     301: iload         20
     303: iadd
     304: istore_3
     305: goto          148
     308: iload_3
     309: istore_1
     310: iload_1
     311: ireturn

  private static final int main$part2(java.lang.String);
    Code:
       0: aload_0
       1: invokestatic  #75                 // Method main$parseInput:(Ljava/lang/String;)Ljava/util/List;
       4: checkcast     #77                 // class java/lang/Iterable
       7: iconst_3
       8: invokestatic  #184                // Method kotlin/collections/CollectionsKt.chunked:(Ljava/lang/Iterable;I)Ljava/util/List;
      11: checkcast     #77                 // class java/lang/Iterable
      14: astore_2
      15: nop
      16: iconst_0
      17: istore_3
      18: aload_2
      19: astore        4
      21: new           #79                 // class java/util/ArrayList
      24: dup
      25: aload_2
      26: bipush        10
      28: invokestatic  #85                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      31: invokespecial #87                 // Method java/util/ArrayList."<init>":(I)V
      34: checkcast     #89                 // class java/util/Collection
      37: astore        5
      39: iconst_0
      40: istore        6
      42: aload         4
      44: invokeinterface #93,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      49: astore        7
      51: aload         7
      53: invokeinterface #99,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      58: ifeq          201
      61: aload         7
      63: invokeinterface #103,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      68: astore        8
      70: aload         5
      72: aload         8
      74: checkcast     #132                // class java/util/List
      77: astore        9
      79: astore        21
      81: iconst_0
      82: istore        10
      84: aload         9
      86: checkcast     #77                 // class java/lang/Iterable
      89: astore        11
      91: iconst_0
      92: istore        12
      94: aload         11
      96: astore        13
      98: new           #79                 // class java/util/ArrayList
     101: dup
     102: aload         11
     104: bipush        10
     106: invokestatic  #85                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     109: invokespecial #87                 // Method java/util/ArrayList."<init>":(I)V
     112: checkcast     #89                 // class java/util/Collection
     115: astore        14
     117: iconst_0
     118: istore        15
     120: aload         13
     122: invokeinterface #93,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     127: astore        16
     129: aload         16
     131: invokeinterface #99,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     136: ifeq          182
     139: aload         16
     141: invokeinterface #103,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     146: astore        17
     148: aload         14
     150: aload         17
     152: checkcast     #105                // class java/lang/String
     155: astore        18
     157: astore        19
     159: iconst_0
     160: istore        20
     162: aload         18
     164: checkcast     #67                 // class java/lang/CharSequence
     167: invokestatic  #117                // Method kotlin/text/StringsKt.toSet:(Ljava/lang/CharSequence;)Ljava/util/Set;
     170: aload         19
     172: swap
     173: invokeinterface #130,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     178: pop
     179: goto          129
     182: aload         14
     184: checkcast     #132                // class java/util/List
     187: nop
     188: nop
     189: aload         21
     191: swap
     192: invokeinterface #130,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     197: pop
     198: goto          51
     201: aload         5
     203: checkcast     #132                // class java/util/List
     206: nop
     207: checkcast     #77                 // class java/lang/Iterable
     210: astore_2
     211: nop
     212: iconst_0
     213: istore_3
     214: aload_2
     215: astore        4
     217: new           #79                 // class java/util/ArrayList
     220: dup
     221: aload_2
     222: bipush        10
     224: invokestatic  #85                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     227: invokespecial #87                 // Method java/util/ArrayList."<init>":(I)V
     230: checkcast     #89                 // class java/util/Collection
     233: astore        5
     235: iconst_0
     236: istore        6
     238: aload         4
     240: invokeinterface #93,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     245: astore        7
     247: aload         7
     249: invokeinterface #99,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     254: ifeq          344
     257: aload         7
     259: invokeinterface #103,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     264: astore        8
     266: aload         5
     268: aload         8
     270: checkcast     #132                // class java/util/List
     273: astore        9
     275: astore        21
     277: iconst_0
     278: istore        10
     280: aload         9
     282: iconst_0
     283: invokeinterface #188,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     288: checkcast     #139                // class java/util/Set
     291: astore        11
     293: aload         9
     295: iconst_1
     296: invokeinterface #188,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     301: checkcast     #139                // class java/util/Set
     304: astore        12
     306: aload         9
     308: iconst_2
     309: invokeinterface #188,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     314: checkcast     #139                // class java/util/Set
     317: astore        13
     319: new           #190                // class kotlin/Triple
     322: dup
     323: aload         11
     325: aload         12
     327: aload         13
     329: invokespecial #193                // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
     332: aload         21
     334: swap
     335: invokeinterface #130,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     340: pop
     341: goto          247
     344: aload         5
     346: checkcast     #132                // class java/util/List
     349: nop
     350: checkcast     #77                 // class java/lang/Iterable
     353: astore_2
     354: iconst_0
     355: istore_3
     356: aload_2
     357: invokeinterface #93,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     362: astore        4
     364: aload         4
     366: invokeinterface #99,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     371: ifeq          549
     374: aload         4
     376: invokeinterface #103,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     381: astore        5
     383: iload_3
     384: aload         5
     386: checkcast     #190                // class kotlin/Triple
     389: astore        6
     391: istore        21
     393: iconst_0
     394: istore        7
     396: aload         6
     398: invokevirtual #194                // Method kotlin/Triple.component1:()Ljava/lang/Object;
     401: checkcast     #139                // class java/util/Set
     404: astore        8
     406: aload         6
     408: invokevirtual #195                // Method kotlin/Triple.component2:()Ljava/lang/Object;
     411: checkcast     #139                // class java/util/Set
     414: astore        9
     416: aload         6
     418: invokevirtual #198                // Method kotlin/Triple.component3:()Ljava/lang/Object;
     421: checkcast     #139                // class java/util/Set
     424: astore        10
     426: aload         8
     428: checkcast     #77                 // class java/lang/Iterable
     431: astore        11
     433: iconst_0
     434: istore        12
     436: iconst_0
     437: istore        13
     439: iload         12
     441: istore        14
     443: aload         11
     445: invokeinterface #93,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     450: astore        15
     452: aload         15
     454: invokeinterface #99,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     459: ifeq          535
     462: aload         15
     464: invokeinterface #103,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     469: astore        16
     471: iload         14
     473: aload         16
     475: checkcast     #53                 // class java/lang/Character
     478: invokevirtual #146                // Method java/lang/Character.charValue:()C
     481: istore        17
     483: istore        18
     485: iconst_0
     486: istore        19
     488: iload         18
     490: aload         9
     492: iload         17
     494: invokestatic  #150                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     497: invokeinterface #153,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     502: ifeq          528
     505: aload         10
     507: iload         17
     509: invokestatic  #150                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     512: invokeinterface #153,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     517: ifeq          528
     520: iload         17
     522: invokestatic  #155                // Method main$getPriorities:(C)I
     525: goto          529
     528: iconst_0
     529: iadd
     530: istore        14
     532: goto          452
     535: iload         14
     537: nop
     538: istore        22
     540: iload         21
     542: iload         22
     544: iadd
     545: istore_3
     546: goto          364
     549: iload_3
     550: istore_1
     551: iload_1
     552: ireturn
}


package day02

import java.io.File

fun main() {

    fun parseInput(input: String) = input.lines().map { it.split(" ") }.map { it.first() to it.last() }

    val points = mapOf("X" to 1, "Y" to 2, "Z" to 3)
    val winsPlayer = listOf("A" to "Y", "B" to "Z", "C" to "X")
    val drawPlayer = listOf("A" to "X", "B" to "Y", "C" to "Z")
    val lossPlayer = listOf("A" to "Z", "B" to "X", "C" to "Y")

    fun getPointPerRound(pair: Pair<String, String>): Int = when (pair) {
        in winsPlayer -> 6
        in drawPlayer -> 3
        else -> 0
    }

    fun part1(input: String): Int {
        val data = parseInput(input)
            .fold(0) { acc, pair ->
                acc + getPointPerRound(pair) + points.getOrDefault(pair.second, 0)
            }
        return data
    }

    fun part2(input: String): Int {
        val data = parseInput(input)
            .map { (first, second) ->
                when (second) {
                    "Z" -> winsPlayer.first { it.first == first }
                    "Y" -> drawPlayer.first { it.first == first }
                    else -> lossPlayer.first { it.first == first }
                }
            }
            .fold(0) { acc, pair ->
                acc + getPointPerRound(pair) + points.getOrDefault(pair.second, 0)
            }
        return data
    }

    val testInput = File("src/day02/Day02_test.txt").readText()

    println(part1(testInput))
    println(part2(testInput))

    val input = File("src/day02/Day02.txt").readText()

    println(part1(input))
    println(part2(input))
}

Compiled from "Day02.kt"
public final class day02.Day02Kt {
  public static final void main();
    Code:
       0: iconst_3
       1: anewarray     #8                  // class kotlin/Pair
       4: astore_1
       5: aload_1
       6: iconst_0
       7: ldc           #10                 // String X
       9: iconst_1
      10: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      13: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      16: aastore
      17: aload_1
      18: iconst_1
      19: ldc           #24                 // String Y
      21: iconst_2
      22: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      25: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      28: aastore
      29: aload_1
      30: iconst_2
      31: ldc           #26                 // String Z
      33: iconst_3
      34: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      37: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      40: aastore
      41: aload_1
      42: invokestatic  #32                 // Method kotlin/collections/MapsKt.mapOf:([Lkotlin/Pair;)Ljava/util/Map;
      45: astore_0
      46: iconst_3
      47: anewarray     #8                  // class kotlin/Pair
      50: astore_2
      51: aload_2
      52: iconst_0
      53: ldc           #34                 // String A
      55: ldc           #24                 // String Y
      57: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      60: aastore
      61: aload_2
      62: iconst_1
      63: ldc           #36                 // String B
      65: ldc           #26                 // String Z
      67: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      70: aastore
      71: aload_2
      72: iconst_2
      73: ldc           #38                 // String C
      75: ldc           #10                 // String X
      77: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      80: aastore
      81: aload_2
      82: invokestatic  #44                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      85: astore_1
      86: iconst_3
      87: anewarray     #8                  // class kotlin/Pair
      90: astore_3
      91: aload_3
      92: iconst_0
      93: ldc           #34                 // String A
      95: ldc           #10                 // String X
      97: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     100: aastore
     101: aload_3
     102: iconst_1
     103: ldc           #36                 // String B
     105: ldc           #24                 // String Y
     107: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     110: aastore
     111: aload_3
     112: iconst_2
     113: ldc           #38                 // String C
     115: ldc           #26                 // String Z
     117: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     120: aastore
     121: aload_3
     122: invokestatic  #44                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     125: astore_2
     126: iconst_3
     127: anewarray     #8                  // class kotlin/Pair
     130: astore        4
     132: aload         4
     134: iconst_0
     135: ldc           #34                 // String A
     137: ldc           #26                 // String Z
     139: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     142: aastore
     143: aload         4
     145: iconst_1
     146: ldc           #36                 // String B
     148: ldc           #10                 // String X
     150: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     153: aastore
     154: aload         4
     156: iconst_2
     157: ldc           #38                 // String C
     159: ldc           #24                 // String Y
     161: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     164: aastore
     165: aload         4
     167: invokestatic  #44                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     170: astore_3
     171: new           #46                 // class java/io/File
     174: dup
     175: ldc           #48                 // String src/day02/Day02_test.txt
     177: invokespecial #52                 // Method java/io/File."<init>":(Ljava/lang/String;)V
     180: aconst_null
     181: iconst_1
     182: aconst_null
     183: invokestatic  #58                 // Method kotlin/io/FilesKt.readText$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String;
     186: astore        4
     188: aload_0
     189: aload_1
     190: aload_2
     191: aload         4
     193: invokestatic  #62                 // Method main$part1:(Ljava/util/Map;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I
     196: istore        5
     198: getstatic     #68                 // Field java/lang/System.out:Ljava/io/PrintStream;
     201: iload         5
     203: invokevirtual #74                 // Method java/io/PrintStream.println:(I)V
     206: aload_1
     207: aload_2
     208: aload_3
     209: aload_0
     210: aload         4
     212: invokestatic  #78                 // Method main$part2:(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/lang/String;)I
     215: istore        5
     217: getstatic     #68                 // Field java/lang/System.out:Ljava/io/PrintStream;
     220: iload         5
     222: invokevirtual #74                 // Method java/io/PrintStream.println:(I)V
     225: new           #46                 // class java/io/File
     228: dup
     229: ldc           #80                 // String src/day02/Day02.txt
     231: invokespecial #52                 // Method java/io/File."<init>":(Ljava/lang/String;)V
     234: aconst_null
     235: iconst_1
     236: aconst_null
     237: invokestatic  #58                 // Method kotlin/io/FilesKt.readText$default:(Ljava/io/File;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String;
     240: astore        5
     242: aload_0
     243: aload_1
     244: aload_2
     245: aload         5
     247: invokestatic  #62                 // Method main$part1:(Ljava/util/Map;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I
     250: istore        6
     252: getstatic     #68                 // Field java/lang/System.out:Ljava/io/PrintStream;
     255: iload         6
     257: invokevirtual #74                 // Method java/io/PrintStream.println:(I)V
     260: aload_1
     261: aload_2
     262: aload_3
     263: aload_0
     264: aload         5
     266: invokestatic  #78                 // Method main$part2:(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/lang/String;)I
     269: istore        6
     271: getstatic     #68                 // Field java/lang/System.out:Ljava/io/PrintStream;
     274: iload         6
     276: invokevirtual #74                 // Method java/io/PrintStream.println:(I)V
     279: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #92                 // Method main:()V
       3: return

  private static final java.util.List<kotlin.Pair<java.lang.String, java.lang.String>> main$parseInput(java.lang.String);
    Code:
       0: aload_0
       1: checkcast     #99                 // class java/lang/CharSequence
       4: invokestatic  #105                // Method kotlin/text/StringsKt.lines:(Ljava/lang/CharSequence;)Ljava/util/List;
       7: checkcast     #107                // class java/lang/Iterable
      10: astore_1
      11: iconst_0
      12: istore_2
      13: aload_1
      14: astore_3
      15: new           #109                // class java/util/ArrayList
      18: dup
      19: aload_1
      20: bipush        10
      22: invokestatic  #113                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      25: invokespecial #115                // Method java/util/ArrayList."<init>":(I)V
      28: checkcast     #117                // class java/util/Collection
      31: astore        4
      33: iconst_0
      34: istore        5
      36: aload_3
      37: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      42: astore        6
      44: aload         6
      46: invokeinterface #127,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      51: ifeq          116
      54: aload         6
      56: invokeinterface #131,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      61: astore        7
      63: aload         4
      65: aload         7
      67: checkcast     #133                // class java/lang/String
      70: astore        8
      72: astore        11
      74: iconst_0
      75: istore        9
      77: aload         8
      79: checkcast     #99                 // class java/lang/CharSequence
      82: iconst_1
      83: anewarray     #133                // class java/lang/String
      86: astore        10
      88: aload         10
      90: iconst_0
      91: ldc           #135                // String
      93: aastore
      94: aload         10
      96: iconst_0
      97: iconst_0
      98: bipush        6
     100: aconst_null
     101: invokestatic  #139                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     104: aload         11
     106: swap
     107: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     112: pop
     113: goto          44
     116: aload         4
     118: checkcast     #145                // class java/util/List
     121: nop
     122: checkcast     #107                // class java/lang/Iterable
     125: astore_1
     126: nop
     127: iconst_0
     128: istore_2
     129: aload_1
     130: astore_3
     131: new           #109                // class java/util/ArrayList
     134: dup
     135: aload_1
     136: bipush        10
     138: invokestatic  #113                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     141: invokespecial #115                // Method java/util/ArrayList."<init>":(I)V
     144: checkcast     #117                // class java/util/Collection
     147: astore        4
     149: iconst_0
     150: istore        5
     152: aload_3
     153: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     158: astore        6
     160: aload         6
     162: invokeinterface #127,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     167: ifeq          218
     170: aload         6
     172: invokeinterface #131,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     177: astore        7
     179: aload         4
     181: aload         7
     183: checkcast     #145                // class java/util/List
     186: astore        8
     188: astore        11
     190: iconst_0
     191: istore        9
     193: aload         8
     195: invokestatic  #149                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     198: aload         8
     200: invokestatic  #152                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     203: invokestatic  #22                 // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     206: aload         11
     208: swap
     209: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     214: pop
     215: goto          160
     218: aload         4
     220: checkcast     #145                // class java/util/List
     223: nop
     224: areturn

  private static final int main$getPointPerRound(java.util.List<kotlin.Pair<java.lang.String, java.lang.String>>, java.util.List<kotlin.Pair<java.lang.String, java.lang.String>>, kotlin.Pair<java.lang.String, java.lang.String>);
    Code:
       0: aload_2
       1: astore_3
       2: aload_0
       3: aload_3
       4: invokeinterface #171,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
       9: ifeq          17
      12: bipush        6
      14: goto          32
      17: aload_1
      18: aload_3
      19: invokeinterface #171,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
      24: ifeq          31
      27: iconst_3
      28: goto          32
      31: iconst_0
      32: ireturn

  private static final int main$part1(java.util.Map<java.lang.String, java.lang.Integer>, java.util.List<kotlin.Pair<java.lang.String, java.lang.String>>, java.util.List<kotlin.Pair<java.lang.String, java.lang.String>>, java.lang.String);
    Code:
       0: aload_3
       1: invokestatic  #176                // Method main$parseInput:(Ljava/lang/String;)Ljava/util/List;
       4: checkcast     #107                // class java/lang/Iterable
       7: astore        5
       9: iconst_0
      10: istore        6
      12: iconst_0
      13: istore        7
      15: iload         6
      17: istore        8
      19: aload         5
      21: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      26: astore        9
      28: aload         9
      30: invokeinterface #127,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      35: ifeq          98
      38: aload         9
      40: invokeinterface #131,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      45: astore        10
      47: iload         8
      49: aload         10
      51: checkcast     #8                  // class kotlin/Pair
      54: astore        11
      56: istore        12
      58: iconst_0
      59: istore        13
      61: iload         12
      63: aload_1
      64: aload_2
      65: aload         11
      67: invokestatic  #178                // Method main$getPointPerRound:(Ljava/util/List;Ljava/util/List;Lkotlin/Pair;)I
      70: iadd
      71: aload_0
      72: aload         11
      74: invokevirtual #181                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      77: iconst_0
      78: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      81: invokeinterface #187,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      86: checkcast     #189                // class java/lang/Number
      89: invokevirtual #193                // Method java/lang/Number.intValue:()I
      92: iadd
      93: istore        8
      95: goto          28
      98: iload         8
     100: istore        4
     102: iload         4
     104: ireturn

  private static final int main$part2(java.util.List<kotlin.Pair<java.lang.String, java.lang.String>>, java.util.List<kotlin.Pair<java.lang.String, java.lang.String>>, java.util.List<kotlin.Pair<java.lang.String, java.lang.String>>, java.util.Map<java.lang.String, java.lang.Integer>, java.lang.String);
    Code:
       0: aload         4
       2: invokestatic  #176                // Method main$parseInput:(Ljava/lang/String;)Ljava/util/List;
       5: checkcast     #107                // class java/lang/Iterable
       8: astore        6
      10: nop
      11: iconst_0
      12: istore        7
      14: aload         6
      16: astore        8
      18: new           #109                // class java/util/ArrayList
      21: dup
      22: aload         6
      24: bipush        10
      26: invokestatic  #113                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      29: invokespecial #115                // Method java/util/ArrayList."<init>":(I)V
      32: checkcast     #117                // class java/util/Collection
      35: astore        9
      37: iconst_0
      38: istore        10
      40: aload         8
      42: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      47: astore        11
      49: aload         11
      51: invokeinterface #127,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      56: ifeq          379
      59: aload         11
      61: invokeinterface #131,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      66: astore        12
      68: aload         9
      70: aload         12
      72: checkcast     #8                  // class kotlin/Pair
      75: astore        13
      77: astore        24
      79: iconst_0
      80: istore        14
      82: aload         13
      84: invokevirtual #205                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      87: checkcast     #133                // class java/lang/String
      90: astore        15
      92: aload         13
      94: invokevirtual #208                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      97: checkcast     #133                // class java/lang/String
     100: astore        16
     102: aload         16
     104: astore        17
     106: aload         17
     108: ldc           #26                 // String Z
     110: invokestatic  #214                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     113: ifeq          197
     116: aload_0
     117: checkcast     #107                // class java/lang/Iterable
     120: astore        18
     122: iconst_0
     123: istore        19
     125: aload         18
     127: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     132: astore        20
     134: aload         20
     136: invokeinterface #127,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     141: ifeq          181
     144: aload         20
     146: invokeinterface #131,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     151: astore        21
     153: aload         21
     155: checkcast     #8                  // class kotlin/Pair
     158: astore        22
     160: iconst_0
     161: istore        23
     163: aload         22
     165: invokevirtual #217                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     168: aload         15
     170: invokestatic  #214                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     173: ifeq          134
     176: aload         21
     178: goto          191
     181: new           #219                // class java/util/NoSuchElementException
     184: dup
     185: ldc           #221                // String Collection contains no element matching the predicate.
     187: invokespecial #222                // Method java/util/NoSuchElementException."<init>":(Ljava/lang/String;)V
     190: athrow
     191: checkcast     #8                  // class kotlin/Pair
     194: goto          366
     197: aload         17
     199: ldc           #24                 // String Y
     201: invokestatic  #214                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     204: ifeq          288
     207: aload_1
     208: checkcast     #107                // class java/lang/Iterable
     211: astore        18
     213: iconst_0
     214: istore        19
     216: aload         18
     218: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     223: astore        20
     225: aload         20
     227: invokeinterface #127,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     232: ifeq          272
     235: aload         20
     237: invokeinterface #131,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     242: astore        21
     244: aload         21
     246: checkcast     #8                  // class kotlin/Pair
     249: astore        22
     251: iconst_0
     252: istore        23
     254: aload         22
     256: invokevirtual #217                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     259: aload         15
     261: invokestatic  #214                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     264: ifeq          225
     267: aload         21
     269: goto          282
     272: new           #219                // class java/util/NoSuchElementException
     275: dup
     276: ldc           #221                // String Collection contains no element matching the predicate.
     278: invokespecial #222                // Method java/util/NoSuchElementException."<init>":(Ljava/lang/String;)V
     281: athrow
     282: checkcast     #8                  // class kotlin/Pair
     285: goto          366
     288: aload_2
     289: checkcast     #107                // class java/lang/Iterable
     292: astore        18
     294: iconst_0
     295: istore        19
     297: aload         18
     299: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     304: astore        20
     306: aload         20
     308: invokeinterface #127,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     313: ifeq          353
     316: aload         20
     318: invokeinterface #131,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     323: astore        21
     325: aload         21
     327: checkcast     #8                  // class kotlin/Pair
     330: astore        22
     332: iconst_0
     333: istore        23
     335: aload         22
     337: invokevirtual #217                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
     340: aload         15
     342: invokestatic  #214                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     345: ifeq          306
     348: aload         21
     350: goto          363
     353: new           #219                // class java/util/NoSuchElementException
     356: dup
     357: ldc           #221                // String Collection contains no element matching the predicate.
     359: invokespecial #222                // Method java/util/NoSuchElementException."<init>":(Ljava/lang/String;)V
     362: athrow
     363: checkcast     #8                  // class kotlin/Pair
     366: nop
     367: aload         24
     369: swap
     370: invokeinterface #143,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     375: pop
     376: goto          49
     379: aload         9
     381: checkcast     #145                // class java/util/List
     384: nop
     385: checkcast     #107                // class java/lang/Iterable
     388: astore        6
     390: iconst_0
     391: istore        7
     393: iconst_0
     394: istore        8
     396: iload         7
     398: istore        9
     400: aload         6
     402: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     407: astore        10
     409: aload         10
     411: invokeinterface #127,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     416: ifeq          479
     419: aload         10
     421: invokeinterface #131,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     426: astore        11
     428: iload         9
     430: aload         11
     432: checkcast     #8                  // class kotlin/Pair
     435: astore        12
     437: istore        13
     439: iconst_0
     440: istore        14
     442: iload         13
     444: aload_0
     445: aload_1
     446: aload         12
     448: invokestatic  #178                // Method main$getPointPerRound:(Ljava/util/List;Ljava/util/List;Lkotlin/Pair;)I
     451: iadd
     452: aload_3
     453: aload         12
     455: invokevirtual #181                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     458: iconst_0
     459: invokestatic  #16                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     462: invokeinterface #187,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     467: checkcast     #189                // class java/lang/Number
     470: invokevirtual #193                // Method java/lang/Number.intValue:()I
     473: iadd
     474: istore        9
     476: goto          409
     479: iload         9
     481: istore        5
     483: iload         5
     485: ireturn
}