- 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
brutushafens 18.05.2014 12:31 # +7
LispGovno 18.05.2014 14:41 # 0
Zuzik 18.05.2014 14:49 # 0
bormand 18.05.2014 15:51 # 0
Zuzik 18.05.2014 15:55 # +1
bormand 18.05.2014 16:02 # 0
Zuzik 18.05.2014 16:10 # 0
Zuzik 18.05.2014 16:15 # 0
3.14159265 18.05.2014 19:40 # +2
> чем больше тем лучше.
Имея навыки оверинжиниринга и познания в паттернах запросто можно и забор высрать.
bormand 19.05.2014 06:34 # 0
tirinox 19.05.2014 15:57 # +3
bormand 18.05.2014 16:50 # +1
Игра о том, как жаваёбы соснули преимуществах c#?
Zuzik 18.05.2014 19:17 # 0
guest 19.05.2014 01:00 # 0
gost 19.05.2014 21:32 # 0
3.14159265 18.05.2014 19:37 # +3
Высрал 4 кирпича!
LispGovno 18.05.2014 23:49 # 0
bormand 19.05.2014 05:11 # 0
chtulhu 19.05.2014 06:03 # +1
bormand 19.05.2014 06:28 # 0
3.14159265 19.05.2014 14:14 # 0
Пробовал в 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:
Это мс-дерьмо надо в ишаке штоле запускать?
bormand 19.05.2014 15:03 # 0
Х.з. Сейчас прошел пару уровней в FF29.0/ubuntu14.04 - нормально работает. Ну тестирование подлагивает, но это терпимо и объяснимо.
3.14159265 19.05.2014 15:07 # 0
Да на некоторых программах (см. ниже) я так и не дождался результата. Если не трудно - попробуй запустить мои примеры.
>FF29.0 - нормально работает.
Тормознуто очень. И много по сети гоняет.
bormand 19.05.2014 15:10 # 0
На хабре писали, что если прога кинет исключение - ответа не дождешься. А жаба там транслируется через жопу шарп, а в шарпе переполнения, емнип, проверяются и бросают экцепшн... Может быть в этом проблема?
3.14159265 19.05.2014 15:12 # +1
return (int)((((long)i)*0x55555556L)>>32);
Выдало мисматч:
-64 -21 -22
bormand 19.05.2014 15:14 # 0
P.S. Байтоёбы набежали на кодехант.
3.14159265 19.05.2014 15:15 # +2
Типа вот, даже в тестах, жаба - говно.
x/3
Три кирпича, лол
Юзать, повторюсь в C#
3.14159265 19.05.2014 14:58 # +1
Решение 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;
3.14159265 19.05.2014 15:06 # +1
return BigInteger.valueOf(x).divide(BigInteger. valueOf(3)).intValue();
Package java.math not found.
А то есть преимущество C#, в using System.Linq, а жаба сосёт потому что в ней нет java.math из стандартной либы?!
bormand 19.05.2014 15:09 # 0
3.14159265 19.05.2014 15:10 # 0
Ха! Я тоже так сделал!
Но это не оправдывает того что байтоебство с делением на 3 тупо виснет
3.14159265 19.05.2014 15:48 # 0
you wrote elegant code!
bormand 19.05.2014 15:52 # 0
А то ;)
tirinox 19.05.2014 16:00 # +2
3.14159265 19.05.2014 16:09 # 0
https://www.codehunt.com/#/sectors/Arithmetic/09
Однако я ошибался. Снова 3 кирпича.
bormand 19.05.2014 16:19 # +1
Может быть жабе дают фору и на ней всегда 3 кирпича?
3.14159265 19.05.2014 16:22 # 0
bormand 19.05.2014 16:28 # 0
Ну вот я в арифметике 14 высрал единичку вот таким пиздецом (в упор не пойму, какую функцию они имели в виду):
Может быть по числу различных ветвей считает?
3.14159265 19.05.2014 16:33 # +1
Ну да. Если ветвлениями подгонка под ответ.
Типа неуниверсальный код.
>в упор не пойму, какую функцию они имели в виду
А я на 10-й застпорился по той же причине.
bormand 19.05.2014 16:40 # 0
А в десятой, кстати, легко. Если побольше примеров надергать подгонкой - можно догадаться что там за линейная операция.
3.14159265 19.05.2014 16:43 # 0
> Если побольше примеров надергать подгонкой
Просто у меня он выдаёт их раз в пару минут.
bormand 19.05.2014 17:38 # 0
Там, кстати, чит есть - если напихать ветвей с if (x == n), то он выведет по контрпримеру на каждую. Так можно за один запуск получить пачку примеров для нужных тебе значений, а не тех, которые взбредут в голову ИИ.
gost 19.05.2014 21:48 # 0
bormand 19.05.2014 21:50 # +2
3.14159265 19.05.2014 16:50 # 0
while (x>=3) x-=3;while (x<=-3) x+=3;return x;
bormand 19.05.2014 17:10 # 0
А я таки прошел 14й, ответ настолько простой...
P.S. Если я закрою браузер - прогресс сохранится?
Zuzik 19.05.2014 18:06 # 0
3.14159265 19.05.2014 19:34 # 0
Oops, something went wrong...
oops, something went wrong.error
Но эта сука требует доступ к личным данным фейкоакка.
3.14159265 19.05.2014 20:49 # 0
Шото нихера простого не придумывается
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-й с первого же раза :)
Zuzik 19.05.2014 21:00 # 0
3.14159265 19.05.2014 21:04 # +1
Zuzik 19.05.2014 21:06 # 0
3.14159265 19.05.2014 21:12 # 0
Вот что он хочет на 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;
Я уже и так, и так. А. Хотя я знаю. Там же формула есть.
bormand 19.05.2014 21:21 # 0
Я вот так написал: Enumerable.Range(0, n).Sum(x => x*x);
> Там же формула есть.
Ее выводить/вспоминать...
З.Ы.: return (2*n*n*n - 3*n*n + n) / 6;
3.14159265 19.05.2014 21:25 # 0
А в жаве как?
Тем формула асимптотически быстрее, что при запуске Enumerable.Range(0, n).Sum(x => x*x); выразилось в Compiler timeout. Пятый раз уже запускаю - снова и снова таймаут.
А формула с первого раза заработала: return --n*(n+1)*(2*n+1)/6 ;
3.14159265 19.05.2014 21:29 # 0
И сколько дало кирпичей? Никак получается скомпилить.
bormand 19.05.2014 21:29 # 0
Три, как и формула.
> Никак получается скомпилить.
Ага, уже давно через раз запускается, я на сегодня забил, видимо европа с америкой набижали.
3.14159265 19.05.2014 21:30 # 0
И кстати тупые программы - поиск циклом, формулы - гораздо быстрее отрабатывают.
bormand 19.05.2014 21:34 # 0
Скучно же... С LINQ интересней возиться.
3.14159265 19.05.2014 21:35 # +2
>Скучно же...
Скучные обои императивные циклы.
bormand 19.05.2014 21:38 # 0
C# с нескучными обоями LINQ.
3.14159265 19.05.2014 21:40 # 0
Работает. Десятый раз запускаю "элегантный":
return s.length()-s.replaceAll("a","").length();
Пустое окно ответа. WTF?
В жабе на каждом вызове replaceAll компилится дорогостоящий объект регулярного выражения.
EDIT:
return s.length()-s.replaceAll("a","").length()+1-1;
А вот так заработало. У меня CODEHURT
bormand 19.05.2014 18:41 # 0
bormand 19.05.2014 18:48 # +1
Вот за это элегантнейшее решение дали 3 кирпича: P.S. Вот получше:
3.14159265 20.05.2014 14:00 # 0
Дык, я сходу написал Math.Pow и потом просто откастил.
long l=(long)Math.pow(number,power);
return (int)l;
Проблема в том что таким образом вычисляем какое-то неправильное говно - степень по модулю 2^32.
Смысл в говнозадаче? Найти хеш ? Или модуль?
bormand 19.05.2014 19:47 # +1
brutushafens 19.05.2014 20:08 # +1
3.14159265 19.05.2014 21:23 # +2
bormand 19.05.2014 22:56 # +2
return (int)Math.Floor(Math.Log10(x)) + 1;
gost 20.05.2014 14:58 # 0
Пиздец феерический.
3.14159265 20.05.2014 15:39 # +1
>> return (int)Math.Floor(Math.Log10(x)) + 1;
>Пиздец феерический.
Полчаса жарился
А эта "маштабируемая" сука отказывается компилить.
3.14159265 20.05.2014 14:15 # 0
int n= (x-1)/2; return (n<0)?0:n*(n+1);
3.14159265 20.05.2014 14:52 # +1
Ох не зря их погнали sSunными тряпками, ох не зря.
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String(char[])
bormand 20.05.2014 15:02 # 0
Эта "жаба" транслируется в шарп на уровне исходников.
http://research.microsoft.com/pubs/210651/CodeHunt%20SBST%202014b.pdf
bormand 20.05.2014 15:04 # 0
> У всех compiler timeout, или только мне так везет?
3.14159265 20.05.2014 15:08 # 0
Вчера забил, так и не смог регэксами решить дождаться, теперь не могу пройти Loops 2/07 из-за этого самого compiler timeout.
Потому решаю в несколько потоков-закладок.
3.14159265 20.05.2014 16:07 # 0
Если переключиться с жабы на проклятый диез, то оно конвертит и показывает во что превращается код, как оказалось
return new String(charArray); => return charArray;
3.14159265 20.05.2014 16:40 # 0
Можно ли проще высрать три кирпича?
return Math.min( 21, ((i-1)/7+((i+1)>>4))*7);
А. Хотя там можно использовать вид битов -8, +7 или просто сделать Math.min, Math.max
3.14159265 20.05.2014 16:52 # 0
3.14159265 20.05.2014 16:55 # 0
Если немного улучшить 1-е говнорешение, то стаёт 2 балла.
3.14159265 20.05.2014 17:10 # +1
3.14159265 20.05.2014 17:25 # 0
В первых примерах никакими изъебами меньше трёх не удавалось выбить, сложения рекурсивно, байтоебские деления - нипочём, а тут такое.
Еще некоторые тесты проходят тупо по return true/false. Иногда через раз.
3.14159265 20.05.2014 21:15 # 0
please rewrite so that argument 1 of this function does not have side-effects
3.14159265 20.05.2014 21:29 # +1
Пробую:
a)return s+new StringBuilder(s).reverse();
b)return new StringBuilder(s).reverse().insert(0,s).t oString();
Казалось бы элегантный one-liner в флюент LINQ-стиле.
1 кирпич.
3.14159265 21.05.2014 15:05 # 0
Что там за дрочь с регулярными выражениями:
Bad Dependency Invalid Referenced Types [auieo]"
Так заработало: return s.replaceAll("(a)|(u)|(i)|(e)|(o)","");
3.14159265 21.05.2014 16:09 # 0
Нихера не понял, вписал в жабе Integer, возвращал null - не компилируется.
Но если написать пару рандомных частных случаев сверху, то test-case (y=64 с null) не выпадает .
Джва кирипича.
А если оставить один частный случай - даёт все три. Вот так код кодхёрт.
3.14159265 22.05.2014 15:49 # 0
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
3.14159265 22.05.2014 17:04 # 0
return new int[5][5];
2 кирпича. Наверное потому что без LINQ