Найти - Пользователи
Полная версия: Как вычеслить количество решений для минимальной платы налогов
Начало » Центр помощи » Как вычеслить количество решений для минимальной платы налогов
1
Funks
Была олимпиада по информатике, там было задание, которое я сделал на половину, мне интересно, как его решить: В компании “Рога и копыта” для минимального налога, надо чтобы за квартал(3 месяца) каждый месяц был одинаковая прибыль/убыток.
Есть журнал с записями прибыли/убытков.

Входные данные:
1 строка- кол-во записей(например 4)
2+ строка- записи(например 2 строка-3, 3 строка- -1, 4 строка-2, 5 строка-5

Выходные данные:
кол-во решений, если нет, то 0


Пример:
Вход:
4
-1
3
3
4
Выход:
1
(Вроде 1 решение)

Пояснение выхода:
1 месяц-
2 месяц-
3 месяц- (3)
py.user.next
Funks
Была олимпиада по информатике, там было задание, которое я сделал на половину, мне интересно, как его решить
А ты не пробовал выкинуть эту задачу? Просто выкинуть и всё. И вместо этого, вместо решения всякой хуеты, никому не нужной и придуманной неизвестно кем, заняться настоящим программированием. Взять книги нормальных программистов, которые хоть что-то сделали в своей жизни в плане программирования (не кого-то там учили с умным видом, а создали свои авторские технологии и софт и принесли пользу какую-то всему миру), и заниматься по этим книгам и смотреть, что там пишут, какие там задачи дают.

Funks
(Вроде 1 решение)
Ты не понимаешь, что там вводится и выводится, не потому, что ты дурак там какой-то и так далее, а просто потому, что формулировка задания тут такая, что “придумай себе сам, что я там придумал, а я в это время буду с умным видом сидеть и изображать, какой я умный, в своём вонючем свитере в какой-то там школе”. Выкинь её и забудь навсегда про этот источник, где ты её взял.
Funks
py.user.next
Понимаешь, мне самому интересно как это решается, я хочу это узнать, не потому что мне это задали, не потому что кто-то спросил как это делать, или что-то еще, а потому что мне нравится программирование, хотя я в нем многое не понимаю, я изучаю его, стараюсь решать задачи которые для меня на данный момент сложные из-за отсутствия определённых знаний, я могу конечно изучать лёгкие задачи, но мне это скучно, не интересно, мне нравится изучать очень сложные задачи или задачи в решении которых я много или обсалютно ничего не знаю, такие задачи придают мне мотивацию для их решения и впринцепе мотивацию развиваться в этом направлении…
xam1816
Funks
В компании “Рога и копыта” для минимального налога, надо чтобы за квартал(3 месяца) каждый месяц был одинаковая прибыль/убыток.
Funks
Вход:
4
-1
3
3
4
Выход:
1
Здесь каждый месяц разная прибыль,что означает 1 на выходе?
Funks
которое я сделал на половину
покажите вашу половину решения.
py.user.next
Funks
Понимаешь, мне самому интересно как это решается, я хочу это узнать
Тебе нужно в этой задаче фактически понять, что задумал автор этой задачи. Это относится к области “как понять, что хочет клиент, который сам не знает точно, чего именно он хочет?”. Тебе рано ещё об этом думать, так как клиентов у тебя нет и не будет в ближайшие несколько лет. Чтобы появились клиенты, тебе нужно научиться программировать, чтобы они про тебя узнали - и что ты можешь программировать, и что ты можешь создавать какие-то программы, и что ты можешь создавать такие же программы, которые вот прямо сейчас нужны им. А пока клиентов нет (а их нет потому, что ты ничего не умеешь пока создавать из пустоты, а воздух и фуфло, которые можно и не делать вообще, ты продавать не умеешь), учись программировать и создавать программы. Нет никакого секретного скоростного программирования, которое узнаётся само, из космоса, а ты такой просто лежишь и ничего не делаешь или там сидишь и в игры играешь всё больше и больше. Есть классическое программирование и новые технологии программирования. Это всё нужно освоить. Нельзя пропустить классическое программирование и сказать “а я сейчас в новейшей школе, которая звездит из всех экранов про мои заработки мечты, пройду супер-курс от гения, который работает там за десять тысяч рублей в месяц (и ещё может быть заплатят, а может и нет, потому что денег нет пока, директор так говорит с грустным лицом по скайпу), и они мне гарантируют (ну, они же не могут врать, у них такие добрые лица, честные люди), что я научусь делать программы новым образом просто и так быстро, всего за год”.
Поэтому я тебе и говорю, что есть задачи простые и сложные, но при этом понятные и самое главное нужные для развития навыков. Но ищешь ты их не там, потому что это говно ты бы сюда не принёс. Там такого говна нет, потому что оно бесполезно, его нельзя есть, в нём нет питательных веществ.

Funks
мне нравится изучать очень сложные задачи или задачи в решении которых я много или обсалютно ничего не знаю
У тебя не будет дефицита в таких задачах, когда ты начнёшь решать задачи из реального мира. Не какие-то там заказные, которые нужны кому-то там, а тебе они нахер не нужны, а вот те, которые нужны тебе. В реальном мире все задачи вот такие, как ты говоришь.

Я вот сейчас делаю программу. Простую скриншотовыжималку. Она просто с сайта выжимает скриншоты. Скачивает на диск скриншоты, которые нужны, а вот которые не нужны, она их выкидывает. Вот я думал, что напишу её за день (полдня буду писать, а полдня буду проверять, отлаживать там, причёсывать её и так далее), а пишу уже её пятый день и допишу завтра, послезавтра - не знаю когда.

Это вот небольшой кусочек этой программы. Когда ссылки на скриншоты скачаны и имена для этих скриношотов тоже скачаны, скриншоты по этим ссылкам не качаются, а имена содержат специальные символы. Следовательно, ссылки нужно переделать на закачиваемые, а имена нужно перевести в читаемые, но без специальных символов и без пробелов.
  
loader_convert_data()
{
    local ifname="$1"
    local ofname="$2"
    local fields field1 field2 field3 field4
 
    [ -e "$ofname" ] && rm -f "$ofname"
    cat "$ifname" | while read line; do
        fields=()
        fields[0]=$(echo "$line" | linehand_getfield "1")
        fields[1]=$(echo "$line" | linehand_getfield "2")
        fields[2]=$(echo "$line" | linehand_getfield "3")
        fields[3]=$(echo "$line" | linehand_getfield "4")
        field1=${fields[0]}
        field2=${fields[1]}
        field3=$(echo "${fields[2]}" | converter_convert_url)
        field4=$(echo "${fields[3]}" | converter_convert_name)
        echo "$field1 $field2 $field3 $field4" >>"$ofname"
    done || return 1
    return 0
}
 
linehand_getfield()
{
    local fieldnum="$1"
    local text="$(cat)"
    local out
 
    if [ "$fieldnum" = "1" ]; then
        out=$(echo "$text" | awk '{print $1}')
    elif [ "$fieldnum" = "2" ]; then
        out=$(echo "$text" | awk '{print $2}')
    elif [ "$fieldnum" = "3" ]; then
        out=$(echo "$text" | awk '{print $3}')
    elif [ "$fieldnum" = "4" ]; then
        out=$(echo "$text" | awk '
{
    for (i = 4; i <= NF; i++) {
        out = out $i (i < NF ? " " : "")
    }
    print out
}
        ')
    else
        out=""
    fi
    echo -n "$out"
}
 
converter_convert_url()
{
    local url="$(cat)"
    local urltype
    local UT_FPO=0 UT_UNDEF=1
    local out
 
    urltype=`urlhand_detect_type "$url"`
    case $urltype in
      $UT_FPO)
        out=`echo $url | urlhand_translate_fpo`;;
      $UT_UNDEF)
        out="$url";;
      *) error "Unknown url type: \"$urltype\"";;
    esac
    echo -n "$out"
}
Вот этот кусочек за это и отвечает - преобразование ссылок и имён. Здесь приведена только верхушка этого кусочка, потому что он дальше растёт глубоко корнями в землю, как дерево. Там ещё целый слой функций под ним, в котором происходит трансляция ссылок и трансляция имён, так как ссылки, по которым хранятся скриншоты, находятся на разных сайтах хранения скриншотов с разными видами ссылок и требующими разных последовательностей преобразований, а имена бывают просто украшены спецсимволами, а бывают такими, что в них указана вся информация об изображениях, где имя самого изображения, которое и нужно, может стоять справа, а может стоять слева - где покажется красивее выкладывателю этого скриншота.

Естественно, ссылки могут требовать наличия прокси-сервера, а могут не требовать наличия прокси-сервера и качаться напрямую. Соответственно, где-то программа должна подставить прокси-сервер в соединение, а где-то может подставить, а можеть не подставлять. Ну и, естественно, если один прокси-сервер не работает, то программе нужно сказать, что вот есть другой прокси-сервер. Это требует наличия конфигурационного файла уже у программы, в котором и будет записан текущий прокси-сервер, так как опцию “вот другой прокси, используй его” программе каждый раз задавать неудобно будет.

Это вот простая задачка “перекачать скриншоты с этого сайта на диск”. Изначально кажется, что она решается за час. Потом через неделю примерно каждодневной работы часов по пять каждый день ты понимаешь, что теперь-то она всё качает, скриншотики лежат упорядоченные у тебя на диске и теперь она через кучку прокси-серверов может спокойно и устойчиво качать скриншоты сотнями за три секунды независимо от того, какой умник и с какими украшенными именами их выкладывал и на каком скриншот-сайте с какими-то там “полезными” предпросмотрами. Тебе это всё не нужно, твоя программа удаляет это всё нафиг, переделывает так, как надо, и скачивает то, что надо, в итоге, а не всякий мусор, который потом сидишь и чистишь руками по полчаса каждый раз.

Что же мне для этого понадобилось? Для этого мне понадобилось программировать всякие программки из всяких задачников десять лет, в результате чего эти программки стали писаться прямо в воображении без записи их в компьютере. И таким образом я понял, например, вчера, что “если я напишу на awk анализатор этой страницы со скриншотами по всем правилам (сначала лексический анализатор в виде конечного автомата, а потом синтаксический анализатор в виде конечного автомата с магазинной памятью для обработки получившегося потока лексем, который мне куски этой html-страницы, где перечислены сриншоты, оттранслирует в тексты в промежуточный файл, а тексты из промежуточного файла оттранслирует в JSON-данные во второй промежуточный файл, а JSON-данные можно уже будеть брать из второго промежуточного файла напрямую и писать в конечный простой текстовый файл с простым текстом, который поступает на вход следующей части этой программы), то это всё займёт столько времени и места, что жалко будет потраченного времени. Так что я просто выяснил, как встроить в программу кусочек на питоне с XPath-запросами, и сегодня будут этим заниматься - конструированием XPath-запросов для работы с деревьями, в которых хранятся скриншоты, которые нужно сначала сплющивать до единичной глубины, прежде чем их анализировать, где там скриншоты лежат, а где просто описания этих скриншотов в виде размера изображения в байтах, разрешения изображения, остальных свойств изображения. То есть нужно будет ещё 70% этих деревьев, получившихся из html-кода, выкидывать, чтобы оттуда ничего не пыталось скачаться на диск, потому что там скриншотов нет, там просто текст какой-то. Естественно, для всего этого тоже нужно будет писать функции, которые будут в форме предикатов отвечать на вопрос ”есть скриншот в этом дереве?: да/нет".

Вот она маленькая программка. Сколько для этого нужно знать, чтобы её сделать, - ну, сам посмотри. Поэтому будешь хуйню решать всякую - не будешь знать ничего, а не будешь знать ничего - не будешь ничего делать, так как само оно не делается. Никакой добрый дяденька не придёт и не сделает для тебя. Не будешь ничего делать - не будет у тебя клиентов/программ/и так далее, придётся тебе учиться фуфло продавать и воздух, как многие делают - то есть открывать школу какую-то (закупать её изготовление), чтобы на лохах, которые поведутся на эту школу (как ученики, так и учителя - они там все в одной роли), делать деньги.


tags: education
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB