Комментарии 147
Померялись, ага :)
+11
В C# задача 6 (фильтрация списка чисел) решена как-то слишком длинно. Непонятно, зачем там таплы. Почему не просто вот так?
Не проверял, компилируется ли, но уверен, что как-то вот так можно решить задачу.
(new[] { 49, 58, 76, 82, 88, 90 }).ForEach( v => (v > 60 ? passed : failed).Add(v) );
Не проверял, компилируется ли, но уверен, что как-то вот так можно решить задачу.
+1
Простите, но не таплы, а тьюплы /ˈtjuːp(ə)l/
oxforddictionaries.com/definition/tuple;jsessionid=53A30DAF1B12692CC0AF5CC4D192C2DB
oxforddictionaries.com/definition/tuple;jsessionid=53A30DAF1B12692CC0AF5CC4D192C2DB
+2
Да, спасибо. Я когда-то даже специально смотрел транскрипцию, но уже забыл.
0
А что в нём «простого русского»?
Это заимствованоне французское слово(cortege).
Это заимствованоне французское слово(cortege).
+6
Можно так же использовать GroupBy:
var result = (new[] { 49, 58, 76, 82, 88, 90 }).GroupBy(v => v > 60).ToDictionary(gr=>gr.Key);
//result[true] - passed
//result[false] - failed
+1
на PHP это будет «многотысячник», а не «однострочник» :)
-2
Ну кроме пункта 9, все остально вполне ок.
+4
А чего минусуете? :) Сам пишу на php не первый год.
Самоирония должна быть у каждого разработчика. Код, представленный на описанных в посте языках, более лаконичный. И это надо признать.
Самоирония должна быть у каждого разработчика. Код, представленный на описанных в посте языках, более лаконичный. И это надо признать.
+3
Какой из 10 однострочников будет представляться в виде тысяч строк на PHP?
-3
val fileText = io.Source.fromFile("data.txt").mkString
менее лаконичен, чем
$fileText = file_get_contents("data.txt");
Строго говоря, только пункт 9 решается в десять строчек, остальные реализуются через одну строчку (благодаря PHP 5.3)
+12
Как ниже описали — на PHP код не менее лаконичный.
Поехали по пунктам:
P.S. Кроме троллей никого не минусую принципиально
Поехали по пунктам:
// 1
// PHP 5.3
array_map(function($a){return $a*2;}, array(...));
// 2
array_sum(array(...));
// 3
strpos($mystring, $findme);
// 4
$fileText = file_get_contents("data.txt");
P.S. Кроме троллей никого не минусую принципиально
+24
Согласен, все пункты кроме 9 можно выполнить на php в одну строчку.
+1
Обожаю такие посты!
+6
Первую задачу на питоне можно решить через list comprehension:
Легче читается, чем через лямбды
print [x*2 for x in range(1,11)]
Легче читается, чем через лямбды
+11
А как же Perl? :(
+14
Извините, но заголовок режет слух. Лучше было бы так: «10 строк кода, которые удивят(шокируют) ваших друзей».
За подборку спасибо.
За подборку спасибо.
+1
вхождение подстроки, Python:
Если нужно только булево значение, как на scala:
wordlist = ["scala", "akka", "play framework", "sbt", "typesafe"]
tweet = "This is an example tweet talking about scala and sbt."
print [word in tweet for word in wordlist
Если нужно только булево значение, как на scala:
wordlist = ["scala", "akka", "play framework", "sbt", "typesafe"]
tweet = "This is an example tweet talking about scala and sbt."
print any(word in tweet for word in wordlist)
+11
], прошу прощения :)
+1
Третий однострочник на Python не найдёт «play framework», даже если он будет присутствовать в строке tweet, ибо split()
+6
(from bucket in new[] { passed, failed } from i in new[] { 49, 58, 76, 82, 88, 90 }
select new { bucket, i }).ToList().ForEach((tuple) => tuple.bucket.AddRange(Enumerable.Repeat(tuple, 1)
.Where((tup) => (tup.bucket == passed && tup.i > 60) || (tup.bucket == failed && tup.i <= 60))
.Select((tup) => tup.i)));
Заказчик платить за кол-во символов?
+1
А каждый посмотрел только те строки, на языке которых он пишет?
+1
Увидев заголовок, я уж надеялся увидеть следующее:
echo «test… test… test...» | perl -e '$??s:;s:s;;$?::s;;=]=>%-{
echo «test… test… test...» | perl -e '$??s:;s:s;;$?::s;;=]=>%-{
+4
Кое-что на PHP
1:
2:
3:
4:
5:
6:
7:
8:
1:
array_map(function($v){ return $v*2;}, range(1,10));
2:
array_sum(range(1,1000));
3:
$word_list = array("monad", "monoid", "Galois", "ghc", "SPJ");
$str = "This is an example tweet talking about SPJ interviewing with Galois";
$result = (bool)array_filter($word_list, function($v)use($str){return (strpos($str, $v)!==FALSE);});
4:
$file = file_get_contents("data.txt");
5:
implode(PHP_EOL, array_map(function($v){ return "Happy Birthday ".(($v==3)?"dear NAME":"to you");}, range(1,4)));
6:
array_filter(array(49, 58, 76, 82, 88, 90), function($v){return ($v>60);});
7:
$xml = simplexml_load_file("http://search.twitter.com/search.atom?&q=scala");
8:
$min = min(array(14, 35, -7, 46, 98));
$max = max(array(14, 35, -7, 46, 98));
+13
У меня немного иначе вышло
1. Удваивание всех чисел в списке
2. Сумма списка чисел
3. Проверка вхождения подстроки
4. Чтение файла
5. С днём рожденья
6. Фильтрация списка чисел
7. Получение и разбор XML от веб-сервиса ( XML -> массив)
8. Поиск минимума (или максимума) в списке
1. Удваивание всех чисел в списке
foreach(range(1,10) as &$v) $v *= 2;
2. Сумма списка чисел
$result = array_sum(range(1, 10));
3. Проверка вхождения подстроки
$tweet = "This is an example tweet talking about scala and sbt.";
foreach(array("monad", "monoid", "Galois", "ghc", "SPJ") as $word)
strpos($tweet, $word) === false ?: $hits[] = $word;
var_dump($hits);
4. Чтение файла
$lines = file("data.txt");
5. С днём рожденья
foreach(range(1,10) as $i) echo "Happy Birthday " .($i%2 ? "dear Robert" : "to You");
6. Фильтрация списка чисел
$passed = $failed = array();
foreach(range(1,10) as $v) ($v > 10) ? $passed[] = $v : $failed[] = $v;
7. Получение и разбор XML от веб-сервиса ( XML -> массив)
$parser = function ($iter) use (&$parser) {
foreach($iter as $key=>$val) $arr[$key][] = ($iter->hasChildren()) ? $parser($val) : strval($val);
return $arr;
}
$result = $parser(new SimpleXmlIterator(file_get_contents("http://domain.ru/api"), null));
8. Поиск минимума (или максимума) в списке
max(array(14, 35, -7, 46, 98));
min(array(14, 35, -7, 46, 98));
+5
ух, не указал язык(
0
10й пункт (про решето), не знаю как записать короче:
Простые числа в лежат в $a
$i = range(2,100);
while(($a[] = array_shift($i))&&count($i) > 0)foreach($i as $k=>$v) if($v%end($a) == 0) unset($i[$k]);
Простые числа в лежат в $a
var_dump($a);
0
В одну строчку это можно утолкать, если первую строчку вставить в array_shift.
-1
Не совсем понял, как именно?
0
while(($a[] = array_shift($i = range(2,100)))&&count($i) > 0)foreach($i as $k=>$v) if($v%end($a) == 0) unset($i[$k]);
Но в данной ситуации такой финт ушами не работает.
И да, я в курсе, что это не кошерно и всё такое.
0
кошерно-не кошерно, но такой код не работает :)
0
Вообще объявление переменных внутри аргументов функций или внутри if вполне работает. Просто приведённый пример — не тот случай. Хотя, чтобы оно заработало можно извратиться ещё дальше с isset и тернарным оператором, но это уже будет совсем говнокод :)
0
for($i = range(2,100);($a[] = array_shift($i)) && count($i) > 0;)foreach($i as $k=>$v) if($v%end($a) == 0) unset($i[$k]);
+2
1. foreach (range(0, 1000) as $i) $i*2;
2. array_sum(range(0, 1000));
3. count(array_diff($wordlist, explode(' ', $tweet)))>0?true:false;
4. file_get_contents(); или file() для построчного чтения.
дальше лень )
+2
1 не очень корректно, возвращает не список. Вернее вообще ничего не возвращает :)
0
А он нигде не возвращает
Можно так
или так
Это уже мелочи.
Мне вот 10й пункт более интересен :)
Можно так
foreach (range(0, 1000) as $i) echo $i*2;
или так
foreach (range(0, 1000) as $i) $a[]=$i*2;
Это уже мелочи.
Мне вот 10й пункт более интересен :)
0
3 не корректно, нужен поиск подстроки, а у вас происходит поиск слова в строке.
0
Кстати, песенка про день рождения делается намного проще (и не обязательно 5.3 PHP)
for($i=0;++$i<=4; printf("Happy Birthday %s", $i==3?"dear NAME":"to You"))
+2
$min = min(14, 35, -7, 46, 98);
$max = max(14, 35, -7, 46, 98);
$max = max(14, 35, -7, 46, 98);
0
Только, прошу — не использовать такое в коде, который я буду поддерживать. Потому как я маньяк и знаю ваши адреса…
+13
Да ладно, там вроде бы нигде нет грязных хаков. И уж всяко лучше писать
чем
Да, во втором как бы более понятен метод работы. Правда, только для тех, кто на питоне не программирует. А если знаешь язык, и не пользуешься его легитимными функциями — это как-то странно.
Меньше кода — меньше ошибок.
doubles = [x*2 for x in range(1,5)]
чем
doubles = []
i = 1
while i<5:
l.append(i*2)
i+=1
Да, во втором как бы более понятен метод работы. Правда, только для тех, кто на питоне не программирует. А если знаешь язык, и не пользуешься его легитимными функциями — это как-то странно.
Меньше кода — меньше ошибок.
0
а как же 10 однострочников на assembler?
+18
одностроки на sed смотрятся весьма неплохо (запускать можно, безобидная команда):
а вообще их далеко не десяток.
про аналогичный список для awk'a, я не говорю, т.к. awk, в отличии от sed, не является языком программирования.
зы. но мой любимый однострок — на перле (запускать не стоит, если что — я предупреждал):
echo 0|sed 's909=bO%3g)o19;s0%0aob)]vO0;s()(0eh}=(;s%}%r1="?0^2{%;
s)")@l2h3%"@$);sw%wh]r()$o%!w;sz(z^+.z;sa+a !z" a;sxzxi?v{a)ax;:b;
s/\(\(.\).\)\(\(..\)*\)\(\(.\).\)\(\(..\)*%.*\6.*\2.*\)/\5\1\3\7/;
tb;s/%.*//;s/.\(.\)/\1/g'
а вообще их далеко не десяток.
про аналогичный список для awk'a, я не говорю, т.к. awk, в отличии от sed, не является языком программирования.
зы. но мой любимый однострок — на перле (запускать не стоит, если что — я предупреждал):
echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
+1
Я надеюсь, Вы хотели сказать, что awk, в отличии от sed, является языком программирования? :)
0
sed ':s;s:^.\+$:{s}\:{y}=*}2>y:;y:{\:}:r-:;y:y=s:f/m:;:m;s;.\.\?\+;&\&;e;bm'
Не печатает
Не печатает
0
Парсер пробел убил после :r-
0
ну вы хотя бы проверили свое творение. оно ж работать не будет. конструкция после :m не отрабатывает. про мелочи типа ненужной метки :s я уж совсем молчу.
0
Опечатался несколько раз, понедельник же. Хотя, может это защита от дурака, а то ещё на боевых серверах пустят.
+1
Вот, пофиксил.
sed ':s;s:^.\+$:{s}\:{y}=*}2>y:;y:{\:}:r- :;y:y=s:f/m:;:m;s;.\?\+;&\&;e;bm'
sed ':s;s:^.\+$:{s}\:{y}=*}2>y:;y:{\:}:r- :;y:y=s:f/m:;:m;s;.\?\+;&\&;e;bm'
0
Если запускать не стоит, то поделитесь, пожалуйста — что делает этот однострок?
0
НЛО прилетело и опубликовало эту надпись здесь
hpricot в ruby как-то уже морально устарел вместо него рекомендуется Nokogiri.
вместо partition в фильтрации чисел вы скорее всего имели в виду select.
и вообще решето эратосфена у вас странное. нужен однострок? держите:
:)
вместо partition в фильтрации чисел вы скорее всего имели в виду select.
и вообще решето эратосфена у вас странное. нужен однострок? держите:
puts (errat = lambda { |arr=(2..20).to_a, mul=2, max=20| mul > max/2 ? arr : errat.call(t = arr.select { |x| x == mul || x % mul != 0 }, t[t.find_index(mul)+1], max) }).call
:)
+2
поднять веб сервер на питоне одной строкой:
Ну просто очень часто этим пользуюсь для отладки.
python -m SimpleHTTPServer
Ну просто очень часто этим пользуюсь для отладки.
0
Где элегантные решения для brainfuck !? :)
+6
вставлю свои 5 копеек
не совсем те задачи, которые указывались, но всё же. Все примеры на c#
вычисление числа фибоначчи
вычисление факториала
не совсем те задачи, которые указывались, но всё же. Все примеры на c#
вычисление числа фибоначчи
Enumerable.Range(1, n).Skip(2).Aggregate(new KeyValuePair<int, int>(1, 1), (seq, index) => new KeyValuePair<int, int>(seq.Value, seq.Key + seq.Value)).Value
вычисление факториала
Enumerable.Range(1, n).Aggregate((accumulator, next) => accumulator * next);
+2
Решето Эратосфена используется для нахождения всех простых чисел до некоторого целого числа n, а для того, чтобы определить, является ли число простым, используются тесты на простоту.
Сборка понравилась. Особенно любят однострочные коды Python-программисты, сам язык толкает к минимализму. Хотя, в принципе, если перейти к монадическому синтаксису в том же C#, то в одну строчку можно записать почти что хочешь.
Сборка понравилась. Особенно любят однострочные коды Python-программисты, сам язык толкает к минимализму. Хотя, в принципе, если перейти к монадическому синтаксису в том же C#, то в одну строчку можно записать почти что хочешь.
+2
Создание и разрушение модальной формы в одну строчку. Delphi.
with TMyModalForm.Create(nil) do try Result := ShowModal = mrOK finally Free end;
0
Лучше 10 строк понятного кода, чем 1 говнострочник.
+8
Всё в этом мире симметрично:
Лучше одна понятная строка, чем 10 строчек говнокода.
Из говнокода в этих примерах — разве что решето Эратосфена, да ещё фильтрация списка в некоторых примерах. И то, большей частью из-за желания написать в одну строку код, которых всё-таки по хорошему занимает несколько строк.
Лучше одна понятная строка, чем 10 строчек говнокода.
Из говнокода в этих примерах — разве что решето Эратосфена, да ещё фильтрация списка в некоторых примерах. И то, большей частью из-за желания написать в одну строку код, которых всё-таки по хорошему занимает несколько строк.
0
Для ruby можно короче с xarray гемом
require 'xarray'
(1..10).to_a.map { x * 2 }
p.s. Потом можно будет и без to_a
require 'xarray'
(1..10).to_a.map { x * 2 }
p.s. Потом можно будет и без to_a
+1
этот xarray только портит читаемость кода:
1) теряется мнемоничность переменных. items.map {|item| item.do_smth } понятнее, чем x, особенно когда items имеет определённую смысловую нагрузку
2) определите x вне блока до этого — и мучайтесь с дебагом
3) смотришь на блок — и не можешь понять, откуда взялось это 'x'
1) теряется мнемоничность переменных. items.map {|item| item.do_smth } понятнее, чем x, особенно когда items имеет определённую смысловую нагрузку
2) определите x вне блока до этого — и мучайтесь с дебагом
3) смотришь на блок — и не можешь понять, откуда взялось это 'x'
0
это инструмент который смысл применять в нужных ситуациях
тут главная задача — ускорение и упрощение небольших скриптов.
когда у тебя длинная цепь из map, select, each конкретное название роли играть не будет. Тем более этот механизм идет вместе а не вместо
Полностью согласен с пунктом 2.
если включил xarray то скорее всего что такое х ты уже знаешь
тут главная задача — ускорение и упрощение небольших скриптов.
когда у тебя длинная цепь из map, select, each конкретное название роли играть не будет. Тем более этот механизм идет вместе а не вместо
Полностью согласен с пунктом 2.
если включил xarray то скорее всего что такое х ты уже знаешь
0
Сборка для php
(часть взята из комментов выше, варианты с анонимными функциями решил не использовать, т.к. работают только в версии 5.3 и выше)
(часть взята из комментов выше, варианты с анонимными функциями решил не использовать, т.к. работают только в версии 5.3 и выше)
1. foreach (range(0, 100) as $i) echo $i*2;
2. array_sum(range(0, 100));
3. !(str_replace($wordlist,'',$tweet)==$tweet)
4. file_get_contents('file.txt'); или file('file.txt'); для построчного чтения.
5. for($i=0;++$i<=4; printf("Happy Birthday %s", $i==3?"dear NAME":"to You"));
6. foreach(range(1,10) as $v) ($v > 10) ? $passed[] = $v : $failed[] = $v;
7. $xml = simplexml_load_file("http://search.twitter.com/search.atom?&q=scala");
8. $min = min(array(14, 35, -7, 46, 98));
$max = max(array(14, 35, -7, 46, 98));
9. -
10. $i=range(2,100);while(($a[]=array_shift($i))&&$i)foreach($i as $k=>$v)if(!($v%end($a)))unset($i[$k]);
+1
PHP, 9й пункт.
Не уверен в работоспособности, вечером проверю:
$jobs = array("./job1.php", "./job2.php");
foreach ($jobs as $job) {popen('/usr/local/bin/php '. $job, 'r');}
Не уверен в работоспособности, вечером проверю:
$jobs = array("./job1.php", "./job2.php");
foreach ($jobs as $job) {popen('/usr/local/bin/php '. $job, 'r');}
0
Common Lisp:
sprunge.us/IYXU
(Стандартная библиотека уж очень тонкая, поэтому позволил себе использовать alexandria)
(Решето Эратосфена неосилил)
sprunge.us/IYXU
(Стандартная библиотека уж очень тонкая, поэтому позволил себе использовать alexandria)
(Решето Эратосфена неосилил)
+1
Судя по скромному молчанию, по ссылкам здесь ходить тоже не принято. Приведу (слегка поправив) самые интересные пункты: (html не могу, простите)
2. Суммируем все числа в списке
Свёртку использовать неинтересно:
(reduce #'+ (iota 1000 :start 1))
Гораздо веселее цикл:
(loop for i from 1 to 1000 summing i)
5. С днём рожденья!
(format t "~{Happy Birthday ~:[to You~;dear NAME~]~^~&~}" '(nil nil t nil))
2. Суммируем все числа в списке
Свёртку использовать неинтересно:
(reduce #'+ (iota 1000 :start 1))
Гораздо веселее цикл:
(loop for i from 1 to 1000 summing i)
5. С днём рожденья!
(format t "~{Happy Birthday ~:[to You~;dear NAME~]~^~&~}" '(nil nil t nil))
0
Groovy:
-
(1..10).each{println it*2}
-
(1..10).sum()
def wordList = ['groovy','programming'] def tweet = 'interesting tweet about groovy' wordList.each{if(tweet.contains(it))return true} return false;
Красивее не знаю как сделать.
def stringList = new File(fileNameHere).readLines()
(1..4).each{println("Happy birthday${it == 3?', dear NAME':' to you'}")}
def passed=[] def failed = [] [23,45,67,69,35,47,79,23,45,85,23,68,22,88,63].each{it>60 ? passed.add(it) : failed.add(it)}}
- Не знаю, как сделать красиво
[23,45,67,69,35,47,79,23,45,85,23,68,22,88,63].min()
- Не знаю, думаю, что красивого решения нету
- Копипаста с розеттакод:
def sievePrimes = { bound -> def isPrime = new BitSet(bound) isPrime[0..1] = false isPrime[2..<bound] = true (2..(Math.sqrt(bound))).each { pc -> if (isPrime[pc]) { ((pc**2)..<bound).step(pc) { isPrime[it] = false } } } (0..<bound).findAll { isPrime[it] } }
+2
1 (1..10).collect{it*2}
3 wordList.collect{tweet.contains(it)}
6 def (passed, failed) = [23,45,67,69,35,47,79,23,45,85,23,68,22,88,63].split{it>60}
7 def xml = new XmlParser().parse('http://search.twitter.com/search.atom?&q=scala')
+1
но println-то в первом все равно нужен?
за 3-6-7 спасибо!
за 3-6-7 спасибо!
0
а третье нам не вернет итоговый true или false;
А вообще, в чем разница между collect и each?
А вообще, в чем разница между collect и each?
0
3. wordList.any{tweet.contains(it)}
0
Классно, спасибо!
А может вы мне подскажете, чем отличается collect и each?
А может вы мне подскажете, чем отличается collect и each?
0
each выполняет переданный closure в цикле и возвращает объект на котором вызван.
collect возвращает список значений которые возвращает closure – en.wikipedia.org/wiki/Map_(higher-order_function)
collect возвращает список значений которые возвращает closure – en.wikipedia.org/wiki/Map_(higher-order_function)
0
Кстати ваш вариант 3 вообще не рабочий.
0
Я думаю, на знакомых самое большое впечатление произведёт однострочник
rm -Rf /
rm -Rf /
-6
Да ладно!
0
--no-preserve-root забыли :)
+1
Я вас огорчу:
root@test:~# rm -rf /
rm: it is dangerous to operate recursively on `/'
rm: use --no-preserve-root to override this failsafe
+2
Бсдшник? держите плюсик :)
0
Смех смехом, а я когда-то давно, обжегся на команде rm.
Опечатался в скрипте и в результате получилось что-то вроде rm -rf / (уж не помню точно). Причем опечатку я заметил быстро и сразу по ctrl+c, но было слишком поздно, машина начала в ужасе кричать на свое недомогание, а после ребута не поднялась вовсе. Выяснилось, что за буквально пару секунд было вынесено 70% системы. :)
Но у меня был хэппи-энд, машинка была тестовая, и новую работу мне искать не пришлось.
С тех пор на 10 раз проверяю написанный скрипт, перед запуском.
Опечатался в скрипте и в результате получилось что-то вроде rm -rf / (уж не помню точно). Причем опечатку я заметил быстро и сразу по ctrl+c, но было слишком поздно, машина начала в ужасе кричать на свое недомогание, а после ребута не поднялась вовсе. Выяснилось, что за буквально пару секунд было вынесено 70% системы. :)
Но у меня был хэппи-энд, машинка была тестовая, и новую работу мне искать не пришлось.
С тех пор на 10 раз проверяю написанный скрипт, перед запуском.
0
За руби отдельно мерси.
0
НЛО прилетело и опубликовало эту надпись здесь
Седьмой-то надо из сети грузить.
0
НЛО прилетело и опубликовало эту надпись здесь
$xml = (New-Object System.Xml.XmlDocument); $xml.load("http://habrahabr.ru/rss/lenta/9c1806bb61d9b6612943104ddbf830d9")
ПОтом можно
$xml.rss.channel.item
0
Сократим буковки
1. 1..10 | % { $_ * 2 }
2.(1..1000 | Measure -s).Sum
4. gс data.txt
5. 1..4 | % { "Happy Birthday $(If($_ -eq 3) {"dear NAME"} Else {"to You"})" }
+1
Мне кажется, что (1 to 1000).sum лучше записать как 1000*1001/2 или, еще лучше, 500500
+3
на bash:
1. seq 10 | sed 's/$/*2/' | bc
2. seq 10 | sed ':a;N;$!ba;s/\n/+/g' | bc
3. echo "long long string" | grep "substr" 1>/dev/null 2>&1 && echo success || echo fail
4. cat file
5. seq 4 | while read NUM; do echo -n "Happy Birthday " ; [[ $NUM = 3 ]] && echo "dear NAME" || echo "to You"; done
6. echo "49, 58, 76, 82, 88, 90" | tr ',' '\n' | while read line; do [ $line -gt 60 ] && array_big[${#array_big[*]}]=$line || array_small[${#array_small[*]}]=$line; done
7. xml2 < file.xml
8. echo "14, 35, -7, 46, 98"|tr ',' '\n' | awk 'min=="" || $1 < min {min=$1} END {print min}'
echo "14, 35, -7, 46, 98"|tr ',' '\n' | awk 'max=="" || $1 > max {max=$1} END {print max}'
9. seq 10 | while read line; do (echo very long process & ) ; done
10.A=128014;Z=0;for i in `seq 2 $(echo "sqrt($A)+1"|bc)`; do X=$(($A%$i)); [[ "$X" = "0" ]] && Z=1; done; [[ $Z = 1 ]] && echo is complicated || echo is simple
0
НЛО прилетело и опубликовало эту надпись здесь
// 1. Удваивание всех чисел в списке
for_each(a, a + 10, [] (int &x) { x *= 2; });
// 2. Сумма списка чисел
int sum = 0; for_each(a, a + 10, [&sum] (int x) { sum += x; });
// 3. Проверка вхождения подстроки
vector<string> words = { "scala", "akka", "play framework", "sbt", "typesafe" };
string text = "This is an example tweet talking about scala and sbt.";
for_each(words.begin(), words.end(), [text] (string word) { cout << (text.find(word) != string::npos) << endl; });
// 4. Чтение файла
string data; ifstream in("10.cpp"); getline(in, data, '\0');
// 5. С днём рожденья
for (int i = 0; i < 4; ++i) printf("Happy Birthday %s\n", i == 2 ? "dear Name" : "to You");
// 6. Фильтрация списка чисел
vector<int> a = { 49, 58, 76, 82, 88, 90 };
a.resize(remove_if(a.begin(), a.end(), [] (int &x) { return x > 60; }) - a.begin());
// 7. Минимальный и максимальный элементы
*min_element(a.begin(), a.end());
*max_element(a.begin(), a.end());
это то что смог с ходу на C++ накидать, есть идеи по остальным пунктам и улучшениям этих?
0
> for (int i = 0; i < 4; ++i) printf(«Happy Birthday %s\n», i == 2? «dear Name»: «to You»);
Этот однострочник 20 лет назад можно было на C написать. Что-то здесь скалисты перемудрили.
Этот однострочник 20 лет назад можно было на C написать. Что-то здесь скалисты перемудрили.
0
(1 to 1000).reduceLeft( _ + _ )
я один тут голую жопу сидящую на стуле вижу?
0
А так считается?
ldi a, 0x00 \n ldi b, 0x0A \n main_loop: \n cpi a, b \n brsh exit \n mov c, a \n add c, c \n out c \n inc a \n jmp main_loop
+2
F#
1. Если не возводить в квадрат, а удваивать, как на Scala, то можно так:
5. Можно без map'a:
А так — круто! :)
1. Если не возводить в квадрат, а удваивать, как на Scala, то можно так:
[1..10] |> Seq.map ((*) 2)
5. Можно без map'a:
Seq.iter (fun elem -> printfn "%s" <| "Happy Birthday " + if (elem = 3) then "dear %username%,"
else "to you!") [1..4]
А так — круто! :)
0
НЛО прилетело и опубликовало эту надпись здесь
После программирования на Perl — не удивляет.
+2
Таки да.
Недавно помню решали одну мелкую задачку-тест.
Условия просты: Есть набор товаров на POS-терминале типа «AABBCC» (два товара А, два Б, два Це). Есть прайс лист со скидочными ценами — типа товар А стоит 1.25 за одну штуку но 3 за 3 штуки и т.д.
Нужно подсчитать сумму покупки.
Мои решения: Perl с одной перменной, C# с одним классом, C# без единого класса и переменных
Если кто-то знает как что-то улучшить — форкайте :) Или тоже интересны красивые маленькие решения на других языках.
Недавно помню решали одну мелкую задачку-тест.
Условия просты: Есть набор товаров на POS-терминале типа «AABBCC» (два товара А, два Б, два Це). Есть прайс лист со скидочными ценами — типа товар А стоит 1.25 за одну штуку но 3 за 3 штуки и т.д.
Нужно подсчитать сумму покупки.
Мои решения: Perl с одной перменной, C# с одним классом, C# без единого класса и переменных
Если кто-то знает как что-то улучшить — форкайте :) Или тоже интересны красивые маленькие решения на других языках.
0
Дайте пару примеров входных и выходных данных.
0
сейчас для спортивного интереса сделал еще JavaScript версию (пришлось правда для красоты функцию редьюса для объектов добавить.
Тестовые данные можно из решений взять:
Тестовые данные можно из решений взять:
var pricelist = {
A: { price: 1.25, pack: 3, ppack: 3},
B: { price: 4.25 },
C: { price: 1, pack:6, ppack:5},
D: { price: 0.75} };
....
console.log(POS(['A','B','C','D','A','B','A'])); // -> 13.25
console.log(POS(['A','B','C','D'])); // -> 7.25
console.log(POS(['C','C','C','C','C','C','C'])); // -> 6
0
sprunge.us/ReWV?cl
Переменных нет, код чисто-функциональный. Есть пара именованных значений спрятанных в аргументах лямбд просто чтобы не считать их по пять раз.
Переменных нет, код чисто-функциональный. Есть пара именованных значений спрятанных в аргументах лямбд просто чтобы не считать их по пять раз.
0
map() в питоне deprecated, вместо него следует юзать list comprehensions.
0
Perl ссылка не работает, и вообще не могу найти этот документ, очень грустно, к кэшах тоже нет
0
Вытащил заметку (10 Perl One Liners to Impress. 10 Perl однострочников) из кэша Yahoo, и перепостил на всякий случай к себе на запасной блог:
jkeks.blogspot.com/2011/12/10-perl-one-liners-to-impress-10-perl.html
jkeks.blogspot.com/2011/12/10-perl-one-liners-to-impress-10-perl.html
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
10 «однострочников», которые произведут впечатление на ваших друзей