소스 검색

day 9 part 1

Mistivia 3 달 전
부모
커밋
f73acfecac
2개의 변경된 파일55개의 추가작업 그리고 0개의 파일을 삭제
  1. 55 0
      09/1.tcl
  2. 0 0
      09/input

+ 55 - 0
09/1.tcl

@@ -0,0 +1,55 @@
+set fp [open "input"]
+gets $fp line
+close $fp
+
+set line_len [string length $line]
+set layout {}
+set is_file 1
+set file_no 0
+for {set i 0} {$i < $line_len} {incr i} {
+    set num [string index $line $i]
+    if {$is_file} {
+        for {set j 0} {$j < $num} {incr j} {
+            lappend layout $file_no
+        }
+        incr file_no
+    } else {
+        for {set j 0} {$j < $num} {incr j} {
+            lappend layout -1
+        }
+    }
+    set is_file [expr {! $is_file}]
+}
+
+set lp 0
+set rp [expr {[llength $layout] - 1}]
+
+proc swap {lst a b} {
+    upvar $lst uplst
+    set t [lindex $uplst $b]
+    lset uplst $b [lindex $uplst $a]
+    lset uplst $a $t
+}
+
+while {$lp < $rp} {
+    if {[lindex $layout $lp] != -1} {
+        incr lp
+        continue
+    }
+    if {[lindex $layout $rp] == -1} {
+        incr rp -1
+        continue
+    }
+    swap layout $lp $rp
+}
+
+set checksum 0
+set i 0
+while {1} {
+    if {([lindex $layout $i] == -1) || ($i > [llength $layout])} {
+        break
+    }
+    incr checksum [expr {[lindex $layout $i] * $i}]
+    incr i
+}
+puts $checksum

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
09/input


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.