Advent of Code solutions

support more languages

+22 -2
+22 -2
all.rb
··· 278 end 279 280 def self.implemented? part 281 - File.exist? "p#{part}.pl" 282 end 283 284 def self.run part ··· 288 end 289 end 290 291 module Php 292 def self.available? 293 which "php" != nil ··· 304 end 305 end 306 307 - languages = [Haskell, Rust, Trilogy, C, Cpp, Swift, Python, Ruby, TypeScript, Erlang, Elixir, Gleam, Prolog, Php] 308 .filter { |lang| lang.available? } 309 310 root = Dir.pwd
··· 278 end 279 280 def self.implemented? part 281 + return false unless File.exist? "p#{part}.pl" 282 + first_line = File.open "p#{part}.pl", &:gets 283 + not first_line.include?("perl") 284 end 285 286 def self.run part ··· 290 end 291 end 292 293 + module Perl 294 + def self.available? 295 + which "perl" != nil 296 + end 297 + 298 + def self.implemented? part 299 + return false unless File.exist? "p#{part}.pl" 300 + first_line = File.open "p#{part}.pl", &:gets 301 + first_line.include?("perl") 302 + end 303 + 304 + def self.run part 305 + report "p#{part}.pl" do 306 + `timeout 1m perl p#{part} < input` 307 + end 308 + end 309 + end 310 + 311 module Php 312 def self.available? 313 which "php" != nil ··· 324 end 325 end 326 327 + languages = [Haskell, Rust, Trilogy, C, Cpp, Swift, Python, Ruby, TypeScript, Erlang, Elixir, Gleam, Prolog, Php, Perl] 328 .filter { |lang| lang.available? } 329 330 root = Dir.pwd