- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
// Как вы думаете какой вариант кода более правильный?
using System;
using System.Linq;
public class Program {
public static int Puzzle(string s) {
return s.Where(x=>x=='a').Count();
}
}
// Или вот этот?
using System;
using System.Linq;
public class Program {
public static int Puzzle(string s) {
return s.Count(x=>x=='a');
}
}
//С точки зрения Майкрософт 1-ый вариант лучше
Майкрософт запустила игру головоломку, каждая из головоломок решается определнным кодом. После - элегантность решения оценивается, весьма неоднозначным способом.
Подробнее - https://www.codehunt.com/ и статейка на хабре http://habrahabr.ru/post/223173/ . Данная особенность замечена не мной, задачи 2.06 и 2.07
> чем больше тем лучше.
Имея навыки оверинжиниринга и познания в паттернах запросто можно и забор высрать.
Игра о том, как жаваёбы соснули преимуществах c#?
Высрал 4 кирпича!
Пробовал в 3(трёх!) разных браузерах. И везде какие-то баги, фф (я даже последнюю версию качнул для верности) например не показывает панель ожидаемого результата.
TypeError: window.frames[this.iframeId(...)].postMessage is not a function
В опере:
Uncaught exception: DOMException: INVALID_STATE_ERR
Error thrown at line 1, column 220843 in o(n, i) in https://www.codehunt.com/customjquery?v=KxW2BdonKMS7e8z5EoxVNWzqs W_nv2kmrXhDf0XsvQo1:
Это мс-дерьмо надо в ишаке штоле запускать?
Х.з. Сейчас прошел пару уровней в FF29.0/ubuntu14.04 - нормально работает. Ну тестирование подлагивает, но это терпимо и объяснимо.
Да на некоторых программах (см. ниже) я так и не дождался результата. Если не трудно - попробуй запустить мои примеры.
>FF29.0 - нормально работает.
Тормознуто очень. И много по сети гоняет.
На хабре писали, что если прога кинет исключение - ответа не дождешься. А жаба там транслируется через жопу шарп, а в шарпе переполнения, емнип, проверяются и бросают экцепшн... Может быть в этом проблема?
return (int)((((long)i)*0x55555556L)>>32);
Выдало мисматч:
-64 -21 -22
P.S. Байтоёбы набежали на кодехант.
Типа вот, даже в тестах, жаба - говно.
x/3
Три кирпича, лол
Юзать, повторюсь в C#
Решение x/3 показалось мне банальным
Решил попробовать что-нибудь посложнее.
Ни на одно из джвух решений я не получил никакого ответа:
а) return (int)((((long)i)*0x55555556L)>>32);
б) int n=x<<16;
n+=n>>2;
n+=n>>4;
n+=n>>8;
n+=n>>16;
n+=0x1; return n>>18;
return BigInteger.valueOf(x).divide(BigInteger. valueOf(3)).intValue();
Package java.math not found.
А то есть преимущество C#, в using System.Linq, а жаба сосёт потому что в ней нет java.math из стандартной либы?!
Ха! Я тоже так сделал!
Но это не оправдывает того что байтоебство с делением на 3 тупо виснет
you wrote elegant code!
А то ;)
https://www.codehunt.com/#/sectors/Arithmetic/09
Однако я ошибался. Снова 3 кирпича.
Может быть жабе дают фору и на ней всегда 3 кирпича?
Ну вот я в арифметике 14 высрал единичку вот таким пиздецом (в упор не пойму, какую функцию они имели в виду):
Может быть по числу различных ветвей считает?
Ну да. Если ветвлениями подгонка под ответ.
Типа неуниверсальный код.
>в упор не пойму, какую функцию они имели в виду
А я на 10-й застпорился по той же причине.
А в десятой, кстати, легко. Если побольше примеров надергать подгонкой - можно догадаться что там за линейная операция.
> Если побольше примеров надергать подгонкой
Просто у меня он выдаёт их раз в пару минут.
Там, кстати, чит есть - если напихать ветвей с if (x == n), то он выведет по контрпримеру на каждую. Так можно за один запуск получить пачку примеров для нужных тебе значений, а не тех, которые взбредут в голову ИИ.
while (x>=3) x-=3;while (x<=-3) x+=3;return x;
А я таки прошел 14й, ответ настолько простой...
P.S. Если я закрою браузер - прогресс сохранится?
Oops, something went wrong...
oops, something went wrong.error
Но эта сука требует доступ к личным данным фейкоакка.
Шото нихера простого не придумывается
x=System.Math.Abs(x);
if (x>10) return 10;
return ((10-x) %5)*(x/5)+(x-2)%3*(0==(x-3)/2?1:0);
Зато 15-й с первого же раза :)
Вот что он хочет на 3 кирпича:? В Loops/05. LINQ?
int s=0; for (int i=1,p=0;i<(x-1)*2;i+=2) { p+=i;s+=p;}
return s;
Я уже и так, и так. А. Хотя я знаю. Там же формула есть.
Я вот так написал: Enumerable.Range(0, n).Sum(x => x*x);
> Там же формула есть.
Ее выводить/вспоминать...
З.Ы.: return (2*n*n*n - 3*n*n + n) / 6;
А в жаве как?
Тем формула асимптотически быстрее, что при запуске Enumerable.Range(0, n).Sum(x => x*x); выразилось в Compiler timeout. Пятый раз уже запускаю - снова и снова таймаут.
А формула с первого раза заработала: return --n*(n+1)*(2*n+1)/6 ;
И сколько дало кирпичей? Никак получается скомпилить.
Три, как и формула.
> Никак получается скомпилить.
Ага, уже давно через раз запускается, я на сегодня забил, видимо европа с америкой набижали.
И кстати тупые программы - поиск циклом, формулы - гораздо быстрее отрабатывают.
Скучно же... С LINQ интересней возиться.
>Скучно же...
Скучные обои императивные циклы.
C# с нескучными обоями LINQ.
Работает. Десятый раз запускаю "элегантный":
return s.length()-s.replaceAll("a","").length();
Пустое окно ответа. WTF?
В жабе на каждом вызове replaceAll компилится дорогостоящий объект регулярного выражения.
EDIT:
return s.length()-s.replaceAll("a","").length()+1-1;
А вот так заработало. У меня CODEHURT
Вот за это элегантнейшее решение дали 3 кирпича: P.S. Вот получше:
Дык, я сходу написал Math.Pow и потом просто откастил.
long l=(long)Math.pow(number,power);
return (int)l;
Проблема в том что таким образом вычисляем какое-то неправильное говно - степень по модулю 2^32.
Смысл в говнозадаче? Найти хеш ? Или модуль?
return (int)Math.Floor(Math.Log10(x)) + 1;
Пиздец феерический.
>> return (int)Math.Floor(Math.Log10(x)) + 1;
>Пиздец феерический.
Полчаса жарился
А эта "маштабируемая" сука отказывается компилить.
int n= (x-1)/2; return (n<0)?0:n*(n+1);
Ох не зря их погнали sSunными тряпками, ох не зря.
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String(char[])
Эта "жаба" транслируется в шарп на уровне исходников.
http://research.microsoft.com/pubs/210651/CodeHunt%20SBST%202014b.pdf
> У всех compiler timeout, или только мне так везет?
Вчера забил, так и не смог регэксами решить дождаться, теперь не могу пройти Loops 2/07 из-за этого самого compiler timeout.
Потому решаю в несколько потоков-закладок.
Если переключиться с жабы на проклятый диез, то оно конвертит и показывает во что превращается код, как оказалось
return new String(charArray); => return charArray;
Можно ли проще высрать три кирпича?
return Math.min( 21, ((i-1)/7+((i+1)>>4))*7);
А. Хотя там можно использовать вид битов -8, +7 или просто сделать Math.min, Math.max
Если немного улучшить 1-е говнорешение, то стаёт 2 балла.
В первых примерах никакими изъебами меньше трёх не удавалось выбить, сложения рекурсивно, байтоебские деления - нипочём, а тут такое.
Еще некоторые тесты проходят тупо по return true/false. Иногда через раз.
please rewrite so that argument 1 of this function does not have side-effects
Пробую:
a)return s+new StringBuilder(s).reverse();
b)return new StringBuilder(s).reverse().insert(0,s).t oString();
Казалось бы элегантный one-liner в флюент LINQ-стиле.
1 кирпич.
Что там за дрочь с регулярными выражениями:
Bad Dependency Invalid Referenced Types [auieo]"
Так заработало: return s.replaceAll("(a)|(u)|(i)|(e)|(o)","");
Нихера не понял, вписал в жабе Integer, возвращал null - не компилируется.
Но если написать пару рандомных частных случаев сверху, то test-case (y=64 с null) не выпадает .
Джва кирипича.
А если оставить один частный случай - даёт все три. Вот так код кодхёрт.
1 кирпич
Ок. Будем юзать коллекции с оверхедом и боксингомcannot find field Collections
Ok.
method asList not found (did you forget an 'import' declaration?)
Переключаюсь на C#
cannot find class which contains method IndexOf
FFFUUUuuuu
return new int[5][5];
2 кирпича. Наверное потому что без LINQ