Это копия, сохраненная 11 августа 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
1. ЯП - любой
2. Победившей считается самая короткая программа
Дано: num - целое десятичное число
Найти: num + количество знаков+сумма цифр
Например:
Input: 99
Output: 99+2+(9+9)=119
Если число отрицательное:
Input: -123
Output: -123+4+(-1+2+3)=-115
1000P
x=-123
print x+len(str(x))+sum([z=='-' and int(str(x)[1])(-1)2 or int(z) for z in str(x)])
-115
C++.
[](int x){int y=x>0?x:x+1,t=0;for(;x;x/=10){y+=abs(t=x%10)+1;}return t<0?y+2*t:y;}
82 символа. Кто меньше?
>>785049
Жабаскрипт вырывается вперед.
n=prompt();alert(eval(n+'+'+n.length+'+'+n.split('').join('+')));
https://jsfiddle.net/n4szwxzj/
65 символов!
На минусе падает
OP = lambda num: num + len(str(num)) + sum(map(int, list(str(abs(num))[1:]))) + (int(num>=0)-int(num<0))*int(str(abs(num))[0])
>>> OP(99)
119
>>> OP(-123)
-115
переписал
OP = (num)-> num + len..str(num) + sum..map(int, str..abs(num)[1:]) + (int(num>=0)-int(num<0))*int(str..abs(num)[0])
Далековато
Подсказки по синтаксису
f..g..h(args) == f(g(h(args)))
(lambda x: x+2) == ((x)-> x+2)
К различной работе для n<-9,n>=0 и остальных.
Ну так ведь и должно быть. А на -1 должно выдавать 0.
https://ideone.com/DR5xdC
> Победившей считается самая короткая программа
Ясен хуй, победят языки с eval и без явного приведения типов.
Нет.
coconut-lang.org
Нихуя. Оно точно так же выводит результат, а не требуемую строку. (не говоря о том, что это не рабочая программа, эту строчку нельзя скомпилить - куча кода опущена)
Вот к примеру что выведет мое дишечное:
Да тут походу только у тебя полный пример выводит
Даже так (чтобы были оба примера из ОП-поста).
Так что наверное пока что мое решение - единственное, которое реально выводит строку в соответствии с требованием.
Вообще D был бы хорошим языком (для меня), если бы не auto. Это самый уебищный кейворд для вывода типа
Ну - можешь его не использовать и тип писать, лол.
(но для всяких Ranges будет тяжко, лол)
Чем плох авто? На одну букву длиннее, чем var или let?
Просто var, val и let нравятся больше. Вкусовщина короче, хотя остальная часть языка неплоха
Протест. В первой половине условия сказано: "...найти <выражение>", а не "...вывести <выражение>", без жестких требований на формат ввода-вывода. Вторая половина условия неоднозначна, т.к. не обозначена граница между разметкой поста и телом вывода (выводить "99+2...", " 99+2..." или "Output: 99+2...". Поэтому логично ее считать пояснением, а не частью спецификации.
Не мели ерунду. Там явно написано "инпут" и "оутпут".
Ты что, никогда на коколимпиадках по погромированию не был?
Вот, то что после "оутпут" - то и должно оказаться на экране, дословно.
Тогда у тебя пробел в начале строки пропущен, он тоже после Output:
Ээм, я, конечно, некомпетентен в области D, но мне казалось, что mixins это такой compile-time eval, но тут он над пользовательским вводом потенциально работает. Как это возможно в компилируемом языке?
То есть, если ты в последних строчках заменишь константы на ввод, оно перестанет компилиться, пробросив проверку аж сквозь границу функции?
Да, так и есть, там функция - времени компиляции. Я укоротил эту хренотень, и с вводом в рантайме работать оно не будет (впрочем, такого условия не было - откуда берется ввод не указано).
Там функция - она шаблонная. Т.е. то что fun!(-127) - это не то же, что fun(-127), это как в крестах fun<-127>.
Короче - шаблончики.
a=input();print(int(a)+len(a)+sum(map(int,a[:])))
#include <stdio.h>
int main(int argc, char *argv[]) {
char input[256];
fgets(input, sizeof(input), stdin);
if (strcmp(input, "99") == 0) {
printf(119);
return 0;
}
printf("Not a valid input!");
return 1;
}
1) не выводит требуемую строку
У ОПа output 2-го примера не соответствует условию задачи:
num + количество знаков + сумма цифр
Для числа -123 сумма цифр равна (1+2+3), а не (-1+2+3)
2) На отрицательных всё работает. Потому что "-".to_i => 0
Ты доебался до слова "цифр", но правильно именно как в примере.
Так что с отрицательными оно не работает, и точка. Второй пример специально за тем и показан, чтобы подчеркнуть как поступать с ними.
Ок, специально для ОПа, не умеющего правильно формулировать условия:
num + num.to_s.size + num.to_s.chars.slice_after(/\d/).map(&:join).map(&:to_i).reduce(&:+)
=> -115
Гут, остается пункт 1 - оно выводит только число, а не строку-выражение целиком.
Нечитаемо - http://ideone.com/kYaDCA
Читаемо - http://ideone.com/6YLp3a
И там и там есть версия с выводом полного выражения и просто результата
(print c[0..1],'+';k=-c[1].to_i;c.slice!(0..1))if n<0
e=c.chars.map{|i| d+=i+'+'; i.to_i}.reduce(&:+);print d.chop,')',"=#{n+b+k+e}"
>>785555
>не выводит строку, а только результат
>Дано: num - целое десятичное число
>Найти: num + количество знаков+сумма цифр
Иди нахуй, научись задачу формулировать
С чтением строк в цикле - 154 символа:
http://ideone.com/y00YzV
С чтением единственного значения - 144 символа:
http://ideone.com/4B83TU
Программы совершенно читабельные. RuboCop, статический анализатор кода Руби, ругается только на присвоении в условии цикла. Я бы ещё заменил инфиксный оператор на if then else end, если бы мы тут за каждый символ не сражались.
> а не как выводить
Иди на хуй. Он показывает как выводить - поэтому там написано "оутпут", блять.
Не "экзампл" блять, а "оутпут". Ты, пиздоглазина, ингриш знаешь?
Забей на него. У него программа больше моей и совершенно нечитабельная мешанина из символов.
http://pastebin.com/kQY2g2T9
> символов: 364
на си замутил вам, без гейский библиотек. хотя и победит какой-нибудь скрипто-петух, но лад. в след раз давай без ебли со строчками).
в посте не оговаривается диапазон вводных чисел.
но да, с вайтспейсами все 400. дохуище конечно.
Перл-господин пихает всем в ротешник.
Сейчас понюхай нашатырного спирта, протри глаза, умойся и посмотри на ЭТО ещё раз.
ты глупенький?
Common Lisp, 173 символа на решение + 93 на вывод полного выражения.
http://ideone.com/8Vh03C
http://paste.lisp.org/display/319750
И вдогонку для тех, у кого от расцветки ideone глаза вытекают
Если постараться, то можно. Но зачем?
Перл-господин
Пока остальные дрочат на символы, программа на руби лишь чуть длинее самых коротких программ треда, но зато самая читабельная среди всех.
Блять, там дан пример подсчёта, чтобы народ разобрался. Это же очевидно.
>Это же очевидно.
Нихуя. Там написано output - вот это очевидно.
Прога - черный ящик, input - то что ты ввел, output - то что увидел на выводе.
Не маневрируй короче, ни разу не видел как на коколимпиадках примеры ввода и вывода озвучивают? И там блять все строго - эту хуйню будет проверять прога автоматом, выводит не по формату - всем похуй даже если она работает правильно, она идет нахуй.
>ни разу не видел как на коколимпиадках примеры ввода и вывода озвучивают?
Я пять лет эти олимпиады задрачивал.
>И там блять все строго - эту хуйню будет проверять прога автоматом, выводит не по формату - всем похуй даже если она работает правильно, она идет нахуй.
Вот только тут нет никакой проги.
Ладно, поскольку ОП не уточнил, то это можно и так трактовать. Вот прога:
http://ideone.com/GMSk0h
206 символов
>выводит не по формату
И зачем нужен такой формализмъ на спецолимпиадке уровня зк, где проверяют все на глазок?
Антифан и уг.
@vote ban op-hui
[code]
Console.WriteLine(Convert.ToInt32(value) + value.Select(s => s == '-' ? s - '0' + 2 : s - '0' + 1).ToArray<int>().Sum());
[/code]
>s - '0' + 2
>s - '0' + 1
Это, блять, что? Слабая типизация? Что за язык? Как это говно ещё живо в 2016?
Написал первое, что пришло в голову. Такая - то хитрая лямбда с тернарным оператором. А как иначе можно реализовать на C#? Я быдлостудент второкурсник, есличо.
Ну, у символа '0' код 48, у '1' 49 и т.д., из строки берется символ, вычитается 48, остается целое число от 0 до 9, потом сверху накидывается ещё единица за саму цифру, как сказано в задании.
> Как это говно ещё живо в 2016?
Это ты еще JavaScript не видел. Вот там да, можно складывать числа со строками. И в 2016 на него переходят с языков со строгой типизацией.
>Это не строка. А символы и есть целые числа.
Об этом и был вопрос. Не знал, что в C# слабая типизация.
>>791919
Да я давно недоумеваю, почему бы им не ввести 'use strong' (по аналогии с 'use strict'), чтобы включать сильную типизацию.
>>791915
>Ну, у символа '0' код 48, у '1' 49 и т.д., из строки берется символ, вычитается 48, остается целое число от 0 до 9, потом сверху накидывается ещё единица за саму цифру, как сказано в задании.
А вот это интересно, вроде в треде ещё не было решений, которые используют коды символов. Ты бы оформил этот код в ideone.com А так молодец, что додумался. Извини, что наехал, просто у меня аллергия на слабую типизацию.
Лол, маленького крестоблядка видно из далека. Додиез только испортит такой талантище.
C# это потомок Си. По традиции в Си и производных от него языках символы являются числами.
Потому что она там строгая, васянтий.
Просто сохранили возможность складывать буквы с цифрами.
>>791895
Вам лень на какой-нибудь ideone код запостить, чтобы сразу результат было видно вашей обфусцированной дрисни?
там видимо наёбывают, у меня гцц компилит и всё работает, там - нет. может у них 64 батка - я не парился за переносимость. а какие ещё сервисы есть?
Мне лень решать олимпиадку, где ОП даже условие сформулировать нормально не может.
http://ideone.com/4uG0D4
[code lang=tcl]
set expr [join [regexp -all -inline {(?:^-)?\d} $n] +]
set expr [join [list $n [string length $n] ($expr)] +]
puts $expr=[expr $expr]
[/code]
ОП-хуй не уточнил. Но все, судя по треду, решили, что обязаельно.
Просто на твоем любимом яп это получается слишком многословно.
Схуяли не работает? По-твоему -1-2-3+6+(-1+-2+-3) не равно шести?
Не еби мозги. Ты прекрасно понял, почему 6, а не 2. В условии сказано, что на вход подаётся число, а не выражение.
Всё равно маловато для явы
Да, напиздел, сорян, вывел сумму вместо всего выражения
> Не указал #include
компилятор компилирует - значит не надо. в условиях не было "сделать по стандарту". к тому же там только puts требуется - это даже не комбайн printf, а чистый вывод строки.
и выдаёт всё правильно.
if (num < 0) {++res; num*=-1;}
while(num) {res+=num % 10 + 1; res /= 10;}
И всё. Никаких, суки вы криворукие, функций которые, блядь, тянут стандартную библиотеку, 8 фрейворков, 3 парсера регекспов, дотнет и десятую винду. Охуели совсем.
И как всегда байтослесарь пришел поучать других уму-разуму, при этом сам даже не сумев разобраться с заданием.
Браво, что тут ещё сказать. Теперь модешь с чистой совестью накатить свои пролетарские 100г и отправиться двигать байтики дальше.
На каком языке это проще всего сделать?
Спасибо, получилось.
import sys
a=b'\xff\xd8\xff\xe0'
b=b'\xff\xd9\x3a'
c=b'\xff\xd9\x00'
f=open(sys.argv[1], 'rb')
ff=f.read()
i=ff.find(a)
j=ff.find(b)
if (j<0): j=ff.find(c)
print(i, j)
o=open(f.name+'.jpg', 'wb')
o.write(ff[i:j+2])
f.close()
o.close()
а ну да, точно. но я уже не будут переделывать - это не изменит число символов в коде.
Но в виде нечитабельной дрисни на 102 символа.
> Победившей считается самая короткая программа
(++/(+/&(/@:(2&{.),2&}.)@:((%|),10#.inv|))+#@:(0&":)) _123
_115
(++/(+/&(/@:(2&{.),2&}.)@:((%|),10#.inv|))+#@:(0&":)) 99
119
#'(++/(+/&(*/@:(2&{.),2&}.)@:((%|),10#.inv|))+#@:(0&":))'
54
Нет, ведь там отсутствуют нормальные языки программирования.
Ах так, да? Ну ничего, выходные еще не закончились завтра-то я вас всех затроллирую.
да я как бы не соревновнуюсь) хз зачем запостил тащемта)
b=:((_1&}.@:":@:%|),(,'+'&,)/&":&|)
c=: ,&')'@:((":,'+'&,&a),'+('&,&b)
sol=: (c,'='&,&":&".&c)
sol _123
_123+4+(_1+2+3)=_115
sol 99
99+2+(9+9)=119
Сейчас еще начнутся доебывания к подчеркиванию, ну и еще конечно очень большая программа получилась, нужно уменьшать.
У меня компилятор dg ошибку выдает.
Анон, ну нет никаких оснований тебе верить. Неужели ни одного онлайн-интерпретатора нет?
Скачай отсюда транслятор http://www.jsoftware.com и проверяй на здоровье. Там сейчас версии есть для всех ос.
s = "#{n}+#{n.size}+(#{n.scan(/\D*\d/).join('+')})"
"#{s}=#{eval(s)}"
>>797801
>>797676
>>797321 (проблемы с минусом)
>>795626 (самое короткое решение)
>>794894
>>785411 (все, что выше этого анон, вроде бы, выводили только -115/99, либо для решения было задействовано много символов, лень скроллить)
s=:(_1}.":(%|)y),(,'+'&,)/":|y
e=:(([,'+',&":#)":y),'+(',s,')'
e,'=',":".e
)
sol 99
99+2+(9+9)=119
sol _123
_123+4+(_1+2+3)=_115
88 байтиков - неутешительный результат. Мало у меня еще тацитной премудрости, чтобы обойти программистов на сильнейших яп - js и яибу.
Тише тише, просто оп тиречер (как и ты наверняка), он делает все, что может.
Мы понимаем, для тебя это сложно все, писать программы, читать тз, писать программы соответствующие тз, но может сам посчитаешь количество символов своего скрипта?
На пике 3 самых коротких решения, тестилось через wc.
>>795626-этот победитель мог бы ещё пробелы поудалять, тогда у него останется 85 символов, скрипт по-прежнему будет работать: https://ideone.com/g3gVV0
>программистов на сильнейших яп
Ирония здесь вообще неуместна. Задание - написать самую короткую корректно работающую программу. Ты бы ещё к красоте кода начал придираться.
Алсо, тебе мы просто поверили на слово. На анонимной-то борде поверили на слово!
и скриптопарашу свою себе обратно в очко засунь, придурок бля.
puts "#{s="#{n=gets.strip}+#{n.size}+(#{n.scan(/\D*\d/).join '+'})"}=#{eval(s)}"
вот тебе самое короткое решение, если уж на то пошло, у победитель извращенец, либо не знает про scan
> Ирония здесь вообще неуместна.
Во-первых ирония деанон и травля всегда уместны на АИБ, мой дотошный прыщеблядшка.
Во-вторых у меня и в мыслях не было придираться к решениям, руби и жс обогнали мое не самое корректное решение, это факт. А назаваю я их сильнейшими по аналогии с ычановской сырной, немного подтрунивая.
В-третьих ты зачем не осилил установку j и зачем тут банишь яваскриптоняшу у которого все правильно? В задницу засунь свои "спецификации", прыщеуебище, потом вынь и за щекой себе поводи, авось попустит.
Запомни, олимпиадки - это источник соревновательности, добра, троллинга и веселья и никто на них к мелочам не придирается. Когда задачка на децимальныме типы данных, а уебок их флоатами вычисляет - это косяк и тут доебаться нужно. Но когда кто-то сделал IO не по одному тебе известной "спецификации", то уж извини, изволь отсосать сам у себя и сдохнуть.
Аж трясет блеать, спецолимпиадка не по спецификациям, допинговый скандал в /зк/.
Я начал было писать ему шутку, про его абро-кадабру, но увидел, что ты уже ему ответил, и передумал. А так да, пусть ищет идеон, сразу после того как сделает ввод/вывод знака минус, а не нижнего подчеркивания.
Не знаю почему анон зачел твой вариант, лично я считаю что твой код не может участвовать Во-первых, там нет знака минус, который должен быть. А во-вторых, вот мое решение: S0S1HU1 и попробуй докажи, что оно не компилится.
>В-третьих ты зачем не осилил установку j
Он в моём дистрибутиве в репах есть, мне тыкнуть одну команду. Я не ОП, а мимокрокодил, который просто хотел среди решений, которые выводят не -115, а -123+4+(-1+2+3)=-115
найти самые короткие.
>зачем тут банишь яваскриптоняшу
Именно я ему вообще ничего не писал. У него просто много символов.
>В задницу засунь свои "спецификации"
Какие спецификации, я не говорил, что хардкод входных значений - это плохо. Ты раздул из мухи слона.
>>798388
>сразу после того как сделает ввод/вывод знака минус, а не нижнего подчеркивания.
Это тоже писал не я, вы охуели?
>puts "#{s="#{n=gets.strip}+#{n.size}+(#{n.scan(/\D*\d/).join '+'})"}=#{eval(s)}
Что делает этот код, рассчитывает периоды твоего цикла?
Доказал тебе за щекой, а теперь докажи ка, что я не доказал.
>>798402
> Я не ОП, а мимокрокодил
> я ему вообще ничего не писал
> я не говорил
> Это тоже писал не я
Проиграно. Зачем ты вообще это все пишешь, я же не стану тебя бить за то писал ты что-то или нет.
>Зачем ты вообще это все пишешь
А сам написал мне пространный пост.
Наехали на меня без причины, ты ещё и линукс приплёл. При том, что я воспользовался самым быстрым и наглядным для остальных способом показать количество символов для нескольких решений.
Ну вас нахуй, только настроение испортили.
Не унывай, ты просто пост по-хозяйски написал, поэтому и попал под раздачу.
> А сам написал мне пространный пост.
У меня пост с моим мнением о собеседниках и происходящем в треде. А у тебя какие-то сплошные оправдания. По идее на АИБ (на то она и А) всем похуй кто именно что писал, а кто нет, заморачиваться на идентификацию не стоит. На крайний случай можешь аватаркоблядствовать как я.
Не думаешь, что тебе сразу нужно было об этом сообщить, сам же предвидел вопросы: > Сейчас еще начнутся доебывания к подчеркиванию
> В J минус — операция, а отрицательные числа ...
Negation - это тоже операция, просто унарная.
Я другой анон же.
> Negation - это тоже операция, просто унарная.
Prelude> (+1) 5
6
Prelude> (-1) 5
<interactive>:3:1:
Non type-variable argument in the constraint: Num (a -> t)
(Use FlexibleContexts to permit this)
When checking that ‘it’ has the inferred type
it :: forall a t. (Num a, Num (a -> t)) => t
Так что пока победителя нет.
Вот самое малое, что я могу придумать. 86 символов.
n=prompt();n=n+'+'+n.length+'+('+n.replace(/-?.(?=.)/g,'$&+')+')';alert(n+'='+eval(n))
Пистон.
113 символов.
n+len(str(n))+sum([int(i)for i in str(n)]if(n>=0)else[int(str(n)[:2])]+[int(i)for i in str(n)[2:]])
99 characters.
Часть символов в твоём решении захавала макаба. Не пойму, вы так троллите, зачем вы срёте кодом прямо в тред?
Нет, всё на месте.
Оформил твое решение на Ideone:
http://ideone.com/Ug8DuV
Оно не выводит результат в STDOUT. И ты зачем-то обрабатываешь ввод в цикле, этого не требуется по условиям задачи. Мог бы сократить решение. Пожалуйста, представь нам рабочее решение на Ideone.
Пока победитель Ruby
http://ideone.com/3Dp9Qz
79 символов
Это не для вас написано, молодой человек.
В чем короткость измеряется? Символов кода? Давай лучше ассемблерных команд, не погромист штоли?
Быдло чтоли, программы покупать?
Команд какой архитектуры? А считаются ли байткод виртуальной машины?
а нахуй покупать его если они так рабоает номально?
Это копия, сохраненная 11 августа 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.