Втім сьогодні задачі були вкрай легкі. І особливо — якщо розвʼязувати їх за допомогою мови 🆕.
Вкотре нагадую, що Nushell — це наразі найкрутіша та найзручніша оболонка, яка до того ж ще й стрімко розвивається (і написана на Rust as if someone cares). Мова Nu — статично типізована, передає через пайп структуровані дані, має купу корисних функцій у стандартній бібліотеці тощо. Просто погляньте:
export def solve-one [fileName: string] [nothing -> int] {
log info $"Reading from ($fileName)"
let result = (open $fileName
| parse --regex '(mul\((?P<a>\d+),(?P<b>\d+)\))'
| into int a b
| upsert c {|it| $it.a * $it.b}
| math sum
| get c
)
$result
}Кайф же! (Взагалі-то тут можна було одним
reduce все зробити, але мені отак покроково більше подобається). І працює швидко: приклади та вхідні дані для обох задач обробляє за 20 мс разом узяті. Забудьте про Fish, PowerShell чи, боже збав, Zsh та Bash — тільки Nushell!