Quest 4: Teeth of the Wind

  • Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
  • You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL

Link to participate: https://everybody.codes/

  • Pyro@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    7 days ago

    Python

    # snipped read_input implementation
    data = read_input("input_p3.txt")
    
    # part 1 and 2 can be solved using a calculator 
    # with only the first and last gears
    
    def part3(data):
        shafts = data.splitlines()
    
        rotations = 100 * int(shafts[0])
        for shaft in shafts[1:-1]:
            gear1, gear2 = [int(g) for g in shaft.split('|')]
            rotations *= gear2 / gear1
        rotations /= int(shafts[-1])
        
        return int(rotations)
    
    assert part3("""5
    7|21
    18|36
    27|27
    10|50
    10|50
    11""") == 6818
    
    print(part3(data))
    
    • reboot6675@sopuli.xyz
      link
      fedilink
      arrow-up
      2
      ·
      3 days ago

      Ohh so it was possible to use floats for this! I was “worried” that it would lead to precision errors haha so I ended up “cheating” with BigInt (Golang) to make all the multiplications first and one division at the end

      • Pyro@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        3 days ago

        Yeah, it may be possible for precision errors to accumulate in my solution but for EC the inputs are few enough that it doesn’t really matter. Maybe I got a little lucky with my input too.