rubish #241 7 июня 2013 10 лет стажа === вышка при получении визы/заграна жежесли я ничего не путаю - то 5 лет стажа приравниваются к 2 годам обучения. следовательно бакалавр - это 20 лет стажабакалавр это 4 годато есть 10 лет стажа хз о чем тыя опечатался. 1 год обучения - 5 лет стажа Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #242 7 июня 2013 10 лет стажа === вышка при получении визы/заграна жежесли я ничего не путаю - то 5 лет стажа приравниваются к 2 годам обучения. следовательно бакалавр - это 20 лет стажабакалавр это 4 годато есть 10 лет стажа хз о чем тыя опечатался. 1 год обучения - 5 лет стажахуйню сказал для заграна надо либо вышку либо 10 лет стажа, ну в россии так Поделиться сообщением Ссылка на сообщение
iNaJke #243 7 июня 2013 ilsy, приостанови свой флуд немного, а то в ридонли придется посидеть день-два. prodota™ Мой Кирюша Quote Едем на дачу - KachoOk в придачу! aka KachoOk (R.I.P) Поделиться сообщением Ссылка на сообщение
rubish #244 7 июня 2013 хуйню сказал для заграна надо либо вышку либо 10 лет стажа, ну в россии такну это мб в рашке. у разных стран разная эмиграционная политика. Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение
DIMAN123456789 #245 7 июня 2013 10 лет стажа === вышка при получении визы/заграна жежесли я ничего не путаю - то 5 лет стажа приравниваются к 2 годам обучения. следовательно бакалавр - это 20 лет стажабакалавр это 4 годато есть 10 лет стажа хз о чем тыя опечатался. 1 год обучения - 5 лет стажахуйню сказал для заграна надо либо вышку либо 10 лет стажа, ну в россии такЧто бы в омеригу свалить нужно 12 лет стажа ЛИБО 4 года бакалавриата. У нас дохрена народу работает по рабочим визам в омериге. Без вышки ни в какую не дают. Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #246 7 июня 2013 Не хочу в Амрику. Мне вообще россия нравится вполне. Поделиться сообщением Ссылка на сообщение
TycoooN #247 7 июня 2013 Я нихуя не понял. Зачем какие-то левые _1 _2 _3? Полный перебор это размещенияиз 10 по (количество букв). Для SEND+MORE=MONEY это размещения из 10 по 8. Количество вариантов 10! / 2. Я уже писал это О_О Ну я начал писать по другому, но там пздц условий, заебался.План был такой:1. Пробуем все цифры для последнего символа ответа2. На эту цифру влияют только последние из обоих слагаемых. Подбираем их так чтобы в сумме или мод 10 они давали цифру из п.13. Если прокатил вариант, убираем эти символы (оставляем типа SEN+MOR+MONE) ну и сохраняем че к чему присвоили. И идем рекурсивно в 1 (нужно не забыть еще если сумма >10 была что +1 будет)4. Когда всем буквам присвоили цифры, чекаем. Если не прокатило то откатываемся назад. Как-то так. Да, я думал над этим алгоритмом, но стало лень реализовывать. Сделал ёпта. $ ruby test.rb SEND+MORE=MONEY9567 + 1085 = 106524.0ms Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #249 7 июня 2013 что-то типа start = time.now() puts '9567 + 1085 = 10652' end = time.now() puts start - end + 'ms' думаю 4мс для вывода строки для руби самое то а вообще молодец Поделиться сообщением Ссылка на сообщение
Kant #250 7 июня 2013 не, там 1 мс на вывод строки максимум будет, что в пределах погрешности измерений. Ну либо у него i386. Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
Kant #252 7 июня 2013 а я нет Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
TycoooN #253 7 июня 2013 (изменено) Лол ну короче там код нихуя не читабельный, рефакторить западло. Если кого-то интересует, могу на словах алгоритм пояснить. def available_digits(map, letter) return [0] unless letter if value = map[letter] [value] else (0..9).to_a - map.values endend def solve(words, map, extra_ten = false) words = words.dup map = map.dup last_step = [words[0].size, words[1].size].all? { |size| size == 0 || size == 1 } part1_letter = words[0].chars.to_a.last part2_letter = words[1].chars.to_a.last if last_step && words[2].size == 2 prefix = true prefix_sum_letter, sum_letter = words[2].chars.to_a if value = map[prefix_sum_letter] return unless value == 1 else return if map.values.include?(1) map[prefix_sum_letter] = 1 end else sum_letter = words[2].chars.to_a.last end available_digits(map, sum_letter).each do |sum| new_sum_letter = true unless map[sum_letter] map[sum_letter] = sum sum -= 1 if extra_ten sum += 10 if prefix available_digits(map, part1_letter).each do |part1| next if last_step && (part1_letter && part1 == 0) if part1_letter new_part1_letter = true unless map[part1_letter] map[part1_letter] = part1 end available_digits(map, part2_letter).each do |part2| next if last_step && (part2_letter && part2 == 0) if part1 + part2 == sum || (part1 + part2 == sum + 10 && !last_step) if part2_letter new_part2_letter = true unless map[part2_letter] map[part2_letter] = part2 end return map if last_step chopped_words = words.map { |word| word.chop } new_extra_ten = (part1 + part2 == sum + 10) next_map = solve(chopped_words, map, new_extra_ten) return next_map if next_map map.delete(part2_letter) if new_part2_letter end end map.delete(part1_letter) if new_part1_letter end map.delete(sum_letter) if new_sum_letter end nilend t = Time.now input = ARGV.first unless matchdata = input.to_s.match(/([A-Z]++)\+([A-Z]++)=([A-Z]++)/) puts "Wrong input format" exitend words = matchdata[1..3] if map = solve(words, {}) words = words.map do |word| map.each { |char, num| word.gsub!(char, num.to_s) } word end puts "#{words[0]} + #{words[1]} = #{words[2]}" puts "#{(Time.now - t)*1000}ms"else puts "No solution"end Изменено 7 июня 2013 пользователем TycoooN Поделиться сообщением Ссылка на сообщение
Kant #254 7 июня 2013 рефакторь, не рефакторь, это же руби. Код всё равно останется хуйней Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью. Поделиться сообщением Ссылка на сообщение
TheDeadSkin #255 7 июня 2013 рефакторить код на руби это в прямом смысле что делать "из говна конфетку", из-за отсутствия { } код всё-равно никогда не будет нормально читаемым (это поэтому наверное они вводят в своих стандартах не больше пяти строк кода включая if end методы ), а по быстродействию я не особо в курсе, но судя по тому что фейсбук в рельсах разворачивается одной строкой кода, то сомневаюсь, что можно вести речь хотя бы о какой-то оптимизации его быстродействия в итоге польза рефакторинга кода на руби соотносится с делением 7-значных чисел в столбик на бумаге когда рядом режит калькулятор - поебать мозги всегда хорошо, но выбросить нахуй руби скорее всего будет намного более оптимальным решением Поделиться сообщением Ссылка на сообщение
TycoooN #256 7 июня 2013 Не, у руби охуенный синтаксис, а вы просто говноеды Поделиться сообщением Ссылка на сообщение
Гость 2poy_nyasha #257 7 июня 2013 end end map.delete(part1_letter) if new_part1_letter end map.delete(sum_letter) if new_sum_letter end nilend Поделиться сообщением Ссылка на сообщение
TheDeadSkin #258 7 июня 2013 говноедство это end end end end, а вот } } } } - это четко я вот кстати вкинул в ноутпад++ этот код на руби и врубил соответствующую подсветку синтаксисалучше б я этого не делал, у меня волосы на дыбом встали, я разу вспомнил код на vbs с которым приходилось работать Поделиться сообщением Ссылка на сообщение
rubish #260 7 июня 2013 сделали бы еще := для присваивания и = для сравнения и вообще збз было бы Колы я выросту - то хочу буты такым як я годные смайлы Поделиться сообщением Ссылка на сообщение