Posts Tagged ‘Google Code Jam 2009’

GCJ 2009 R1 Advancers

По традиции публикую неофициальный список беларусов, участвующих в очередном раунде Google Code Jam. Полужирным выделены товарищи, прошедшие в R2. Читаем дальше

GCJ 2009 Qual Advancers

Сделал списочек участников из Беларуси, которые участвовали в квале. Всего 65 человек, 61 из которых проходит в Online Round 1.

Читаем дальше

Google Code Jam 2009 Qualification Round

Только что принял участие в сабже. Результаты будут завтра. Задачки несложные. Кто хочет — можно присоединяться, потому что регистрация открыта будет ещё почти сутки.

UPD: Прошёл квал, решив все задачки. Первый раунд — на следующих выходных.

Товарищ [info]Антон подсказал остроумное решение первой задачи (Alien Language). Вкратце напомню её суть.

Дан набор слов языка и несколько шаблонов вида типа такого: abc(xy)d(gf). Буквы в скобках означают, что на месте этих скобок может быть любая из этих букв. То есть, шаблону выше удовлетворяют следующие слова: abcxdg, abcydg, abcxdf и abcydf. Необходимо найти для каждого из заданных шаблонов, сколько слов из словаря им соответствуют.

Задача при заданных там ограничениях решается в лоб. Самый крутой способ (который я узнал от Антона) — это преобразовать шаблон в регексп, заменив круглые скобки на квадратные :) Тогда задача решается буквально в пару строчек на руби путем проверки каждого слова словаря на соотвествие этому регекспу. Любуйтесь короче:

  l, d, n = gets.split(' ').map { |w| w.to_i }
  dictionary = Array.new(d) { |i| gets.chomp }
 
  1.upto(n) do |test_no|
    pattern = gets.chomp.gsub('(', '[').gsub(')', ']')
    regex = Regexp.new(pattern)
    count = dictionary.select { |word| regex =~ word }.size
    puts "Case ##{test_no}: #{count}"
  end