Комментарии 76
Оригинальный способ поиска разработчиков. :) Респект за креатив. :)
Вот только футбол…
да, после описания подарка даже задания читать расхотелось…
Блин, я бы о таком подарке только мечтал! Вот только до Киева добраться не успею даже если выиграю (
После описания подарка, захотелось провести опрос на хабре с названием: Программисты-футбольные фаны. Сколько нас?
А задания действительно интересные. Можно позаимствовать опыт проведения конкурсов. Сходу решил большую половину. Но на футбол я не поеду.
А задания действительно интересные. Можно позаимствовать опыт проведения конкурсов. Сходу решил большую половину. Но на футбол я не поеду.
По первому заданию такое исправление принимается?
Это фикс в одной строке, и в результате программа выдаёт то, что надо. Ну и что, что остальные строки не используются, про это в условии ничего не сказано :-)
var howManyYears = 1;
howManyYears += "1";
howManyYears -= "1";
alert("1 year on #habr!");
Это фикс в одной строке, и в результате программа выдаёт то, что надо. Ну и что, что остальные строки не используются, про это в условии ничего не сказано :-)
А языки легко определяются поиском в сорцах страницы строк вида <code class=«ruby»> =)
Заводить твиттер, соревноваться за билеты на футбол — какой-то нишевый конкурс получается.
Есть такое хорошее выражение, не помню кто сказал: «Сколько языков ты знаешь, столько раз ты — человек.» Можно, в принципе, его перефразировать до «Сколько языков программирования ты знаешь, столько раз ты программист». Мне лично не верится, что сегодня программист может позволить себе знать всего-лишь какой-то один язык программирования.
А футбол — ну, чем богаты. Ждем конкурса от какой-нибудь российской компании с билетами на Олимпиаду-2014 :)
А футбол — ну, чем богаты. Ждем конкурса от какой-нибудь российской компании с билетами на Олимпиаду-2014 :)
На пять минут же задачки.
Скорость, скорость, скорость.
Скорость, скорость, скорость.
В 5 задании http: — метка, а дальше однострочный комментарий.
Блин, надо JS учить :(
Блин, надо JS учить :(
3 задание:
=>
5 задание:
=>
monthes.push_back(08); monthes.push_back(09);
=>
monthes.push_back(07); monthes.push_back(07);
5 задание:
printf("%d year%s on #habr!", ++years, years == 1 ? "" : "s");
=>
printf("%d year%s on #habr!", ++years, years == 1 ? "s" : "");
В 3 логически не верно. Должно быть так:
>>monthes.push_back(14); monthes.push_back(13);
>>monthes.push_back(14); monthes.push_back(13);
5-ое у вас тоже неверно.
В оригинале — undefined behaviour, т.к. порядок вычисления аргументов функции в С и С++ является неопределенным.
Ваше «решение» может не сработать на иных компиляторе+платформе.
В оригинале — undefined behaviour, т.к. порядок вычисления аргументов функции в С и С++ является неопределенным.
Ваше «решение» может не сработать на иных компиляторе+платформе.
Если делать другие исправления, то логика задания нарушится. Или можете привести правильное «решение»?
Я даже не поленился, а в стандарт глянул — 6.5.2.2 item 10 как раз об этом говорит.
Странно, с 5 разобраться никак не могу.
>>printf("%d year%d on #habr!", ++years, years);
Пишет year1, думал может дело в приоритете:
>>printf("%d year%s on #habr!", ++years, (years == 1)? "": «s»);
Всеравно бред.
Ладно, подумал может компилятор тупой, и оптимизирует years == 1 на константу.
>>/Od
Остается только, что я тупой…
>>printf("%d year%d on #habr!", ++years, years);
Пишет year1, думал может дело в приоритете:
>>printf("%d year%s on #habr!", ++years, (years == 1)? "": «s»);
Всеравно бред.
Ладно, подумал может компилятор тупой, и оптимизирует years == 1 на константу.
>>/Od
Остается только, что я тупой…
С твиттером вы погорячились. Кто-нибудь внимательный соберет все ответы через некоторое время. Хотя это тоже нужно уметь — найти среди всех ответов правильные. Спасибо за интересные примеры, их можно использовать на собеседованиях.
Твиттер использовался для открытости конкурса. Дабы каждый мог отследить что, кто, и когда отвечал, чтобы не было обвинений в духе «а я присылал ответ раньше» и «а у меня было правильнее». И еще чтобы люди оценивали общее количество участников, их активность. Лично я очень не люблю конкурсы, где отсылаешь куда-то ответы, а потом через неделю публикуют победителей — и ты без понятия, кто эти люди, что они сделали, кто вообще участвовал, занял ты 4-ое место или 999-ое или вообще твой ответ не дошел. Мы долго думали над форматом приёма ответов и в итоге выбрали именно такой вариант. А на счёт «кто-то соберет ответы» — победитель этого конкурса наверняка порешает эти задачки быстрее, чем читер перечитает кучу решений и додумается, какие из них верные, а какие — нет (да и для этого тоже мозги нужны).
Правильно писать «months», а не «monthes».
var howManyYears = 1;
howManyYears += "1";
howManyYears = howManyYears / 11;
alert(howManyYears + " year on #habr!");
howManyYears -= "10";
var howManyYears = 1;
howManyYears += «1»;
howManyYears = «1»;
alert(howManyYears + " year on #habr!");
howManyYears += «1»;
howManyYears = «1»;
alert(howManyYears + " year on #habr!");
howManyYears += +«1»
var howManyYears = 1;
howManyYears += parseInt("1",10);
howManyYears -= "1";
alert(howManyYears + " year on #habr!");
or
var howManyYears = 1;
howManyYears += +"1";
howManyYears -= "1";
alert(howManyYears + " year on #habr!");
var howManyYears = 1;
howManyYears += 1;
howManyYears -= "1";
alert(howManyYears + " year on #habr!");
6 задание заставило задуматься, как я понял это dcpu-16 assembler
Как-то так думается
1. javascript
1. 2 — необходимо убрать кавычки т.к. += интерпретирует нач. значение в виде строки, а не числа и производит конкатенацию
2. ruby
2. 3 — ошибка в операторе сравнения. Должно быть !=
3. c++
3. 10 — необходимо убрать нули перед числами. Числа с ведушим нулем воспринимаются в восьмеричной системе.
4. хрен его знает
4. 1 — вероятно надо экранировать #
5. c
5. 5 — перенести инкремент в аргумент, где производится сравнение значения переменной year с 1. Значение аргументов функции вычисляется справа налево.
6. dcpu-16 asm
6. 8 — A заменить на X. Т.к. эта переменная задает смещение выводимого символа от начала строки.
1. 2 — необходимо убрать кавычки т.к. += интерпретирует нач. значение в виде строки, а не числа и производит конкатенацию
2. ruby
2. 3 — ошибка в операторе сравнения. Должно быть !=
3. c++
3. 10 — необходимо убрать нули перед числами. Числа с ведушим нулем воспринимаются в восьмеричной системе.
4. хрен его знает
4. 1 — вероятно надо экранировать #
5. c
5. 5 — перенести инкремент в аргумент, где производится сравнение значения переменной year с 1. Значение аргументов функции вычисляется справа налево.
6. dcpu-16 asm
6. 8 — A заменить на X. Т.к. эта переменная задает смещение выводимого символа от начала строки.
В 5 ошибка. Про точку следования. «Следует заметить, вызов функции нескольких аргументов f(a,b,c) не является случаем применения оператора-запятой и не определяет порядок вычисления значений аргументов.»
В чертвёртом скорее надо экранировать доллар. Кажется, это что-то типа bash или perl, где всё, что начинается с $ — переменная.
Моё решение
1
JavaScript
2
howManyYears += 1;
Number при сложении со String кастуется в String, и происходит конкатенация, вычитания строк в js — нет, поэтому они затем кастуются в число, то есть получается цепочка 1 + «1» => «1» + «1» => «11»; «11» — «1» => 11 — 1 => 10. убираем строку «1», заменяем на число 1.
2
Ruby
2
if (howManyYears != 0)
Оператора сравнения =! в руби — нет.
3
С++
10
monthes.push_back(8); monthes.push_back(9);
Числа начинающиеся с нуля (и если нет следом x, то есть «0x» — это 16ричные) трактуются лексером c++ как восмеричные, и 08, 09 — некорректные числа в восьмеричной системе, ибо там могут использоваться только цифры 0..7
4
PowerShell
1
[regex]::replace('1 year on $habr!','\$','#')
$ в нотации regexp'a значит конец строки, собственно нужно экранировать
5
С
5
years++, printf("%d year%s on #habr!", years, years == 0? "": «s»);
Насколько я знаю, порядок вычисления аргументов функции это compiler-specific (6.5.2.2 item 10), поэтому полагаться нельзя на то, что ++years выполнится первым.
6
DCPU-16 DASM assembly
8
ADD X, 1
Зачем-то инкрементим A, вместо X, X — счетчик цикла, номер текущего символа, а регистр A — сам код символа (с маской фона, офк)
JavaScript
2
howManyYears += 1;
Number при сложении со String кастуется в String, и происходит конкатенация, вычитания строк в js — нет, поэтому они затем кастуются в число, то есть получается цепочка 1 + «1» => «1» + «1» => «11»; «11» — «1» => 11 — 1 => 10. убираем строку «1», заменяем на число 1.
2
Ruby
2
if (howManyYears != 0)
Оператора сравнения =! в руби — нет.
3
С++
10
monthes.push_back(8); monthes.push_back(9);
Числа начинающиеся с нуля (и если нет следом x, то есть «0x» — это 16ричные) трактуются лексером c++ как восмеричные, и 08, 09 — некорректные числа в восьмеричной системе, ибо там могут использоваться только цифры 0..7
4
PowerShell
1
[regex]::replace('1 year on $habr!','\$','#')
$ в нотации regexp'a значит конец строки, собственно нужно экранировать
5
С
5
years++, printf("%d year%s on #habr!", years, years == 0? "": «s»);
Насколько я знаю, порядок вычисления аргументов функции это compiler-specific (6.5.2.2 item 10), поэтому полагаться нельзя на то, что ++years выполнится первым.
6
DCPU-16 DASM assembly
8
ADD X, 1
Зачем-то инкрементим A, вместо X, X — счетчик цикла, номер текущего символа, а регистр A — сам код символа (с маской фона, офк)
Самая страшная ошибка — множественное число от слова month будет months, а вовсе не monthes!
Не знаю как вам, но когда я вижу в коде FrameWork или nDiagnoz то впадаю в ярость.
Не знаю как вам, но когда я вижу в коде FrameWork или nDiagnoz то впадаю в ярость.
А под чем гоняли программу под DCPU-16? Никак не хочет третью строку у меня есть :(
Стираем левый код, используем свой.
0x10command.com/forum/page/codebase/_/snippets/bug-literal-value-0xffff-mis-interpreted-r119
0x10command.com/forum/page/codebase/_/snippets/bug-literal-value-0xffff-mis-interpreted-r119
Как искать язык для 4 задачи? Поделитесь своими способами поиска. Ни с одной поисковой системой в сети у меня не вышло.
Да какая разница какой язык. Знающий регулярные выражения сразу поймет в чем ошибка.
Возьмите в любой язык скопируйте вот такую строку и замену. И посмотрите на результат.
Возьмите в любой язык скопируйте вот такую строку и замену. И посмотрите на результат.
я искал на «class square brackets colon method» и смотрел примеры найденного кода. Вторая ссылка была правильной
Шестое:
SET X, 0
:start
SET A, [string+X]
IFE A, 0
SET PC, end
BOR A, 0x7000
SET [0x8000+X], A
ADD X, 1
SET PC, start
:string dat «1 year on #habr!»,0
:end
SET PC, end
SET X, 0
:start
SET A, [string+X]
IFE A, 0
SET PC, end
BOR A, 0x7000
SET [0x8000+X], A
ADD X, 1
SET PC, start
:string dat «1 year on #habr!»,0
:end
SET PC, end
Еммм… уже 19-е, а результатов чет не видать ))
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Конкурс для программистов