29 lines
888 B
Text
29 lines
888 B
Text
import "io" for File
|
|
import "./pattern" for Pattern
|
|
import "./seq" for Lst
|
|
import "./fmt" for Fmt
|
|
|
|
var p = Pattern.new("+1/s")
|
|
var lines = File.read("days_of_week.txt").split("\n").map { |l| l.trim() }
|
|
var i = 1
|
|
for (line in lines) {
|
|
if (line == "") {
|
|
if (i != lines.count) System.print()
|
|
} else {
|
|
var days = p.splitAll(line)
|
|
if (days.count != 7) Fiber.abort("There aren't seven days in line %(i).")
|
|
if (Lst.distinct(days).count < 7) { // implies some days have the same name
|
|
System.print(" ∞ %(line)")
|
|
} else {
|
|
var len = 1
|
|
while (true) {
|
|
if (Lst.distinct(days.map { |d| d.take(len).join() }.toList).count == 7) {
|
|
Fmt.print("$2d $s", len, line)
|
|
break
|
|
}
|
|
len = len + 1
|
|
}
|
|
}
|
|
}
|
|
i = i + 1
|
|
}
|