taoc5b - aoc22 - advent of code 2022 solutions
 (HTM) git clone git://src.adamsgaard.dk/aoc22
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
       taoc5b (697B)
       ---
            1 #!/bin/awk -f
            2 
            3 function addstart(i, char) {
            4         pile[i] = sprintf("%s%s", char, pile[i])
            5 }
            6 
            7 function append(i, char) {
            8         pile[i] = sprintf("%s%s", pile[i], char)
            9 }
           10 
           11 function pop(i, n) {
           12         len = length(pile[i])
           13         if (len && len - n >= 0) {
           14                 char = substr(pile[i], len - (n-1), len+1)
           15                 pile[i] = substr(pile[i], 1, len - n)
           16                 return char
           17         }
           18 }
           19 
           20 NR == 1 { n = (length+1)/4 }
           21 
           22 $1 ~ /1/ { move=1; getline }
           23 
           24 move == 0 {
           25         for (i=1; i<=n; i++) {
           26                 field = substr($0, (i-1)*4 + 2, 1)
           27                 if (sub(/ /, "", field) == 0)
           28                         addstart(i, field)
           29         }
           30 }
           31 
           32 move == 1 {
           33         nmove = $2
           34         from = $4
           35         to = $6
           36         append(to, pop(from, nmove))
           37 }
           38 
           39 END{ 
           40         for (i=1; i<=n; i++)
           41                 printf("%s", substr(pile[i], length(pile[i]), 1))
           42         print
           43 }