Author Topic: Можно ли вывести в лог однозначное число в виде двухзначного (2 как 02)?  (Read 5073 times)

0 Members and 2 Guests are viewing this topic.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
По поводу оценки сложности алгоритма, я не в курсе. По моему всё просто - более простой алгоритм, для сложной задачи составить труднее, но он будет лучше сложного. А менее производительный код - по определению хуже. Чем меньше разных действий и вычислений в алгоритме, тем он проще. Выше скилл программиста - проще алгоритм и производительней код. А что сверх того, то от лукавого.

Это не про ту сложность, не про сложность написания. Это про вычислительную сложность
https://tproger.ru/articles/computational-complexity-explained/


4.У.В.@.К

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Спасибо за ссылки. Надо будет вникнуть в эту тему. С наскока ничего не понятно.)) И пока не понятно чем это может помочь в написании скриптов. Но для расширения кругозора точно будет полезно.

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Всем привет! :)

Я с интересом наблюдал за развитием этой темы и сочинил такую же конструкцию-строку с нулями. Но Виталий меня опередил. И раз уж совершенству (как и маразму) ;D нет предела, то мне оставалось только "тряхнуть стариной" и придумать что-то другое...

Придумал я вот это - https://yadi.sk/d/771Yn1Y99rNmnw
Не берусь утверждать, что раньше так никто не делал. В конечном итоге, мы в своих скриптах всего лишь меняем местами одни и те же неизменные команды, которые однажды дал нам СОЗДАТЕЛЬ. :)
Скачайте и сохраните архив у себя. А пароль к архиву я выложу как будет найдено такое же решение кем то еще. Тогда сможем сравнить результаты.
Заметьте, не я это придумал. Я лишь поддерживаю идею дать людям возможность находить решения самостоятельно и получать от этого удовольствие. :)

Сохраняя интригу, могу только сказать, что в архиве тоже конструкция в 1 строку (в двух вариантах). Она намного короче в написании (предложенной выше конструкции-строки) и работает быстрее последней в 1,4 раза. А так же, не содержит функций STRLEN и STRCONCAT. И еще, она быстрей, чем громоздкая, но быстрая конструкция со свитчем. В этой задаче, конструкция со свитчем быстрее конструкции с циклом.

Но есть в моей конструкции минусы и ограничения. Пока выявлены только вот эти.
1. Максимальная разрядность на выходе, не более 12 - для первого варианта, и не более 11 - для второго.
2. Второй вариант выдаст не верные данные, если количество разрядов на входе больше, чем ожидается на выходе.

В остальном конструкция вроде работает нормально. От количества добавляемых разрядов, скорость её выполнения не зависит, как например в случаях с циклом и свитчем.


4.У.В.@.К

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Привет Atas!)
У меня только один вопрос. В твоем коде формула или какой-то математический прикол?
Спрашиваю потому, что вывести свою математическую формулу - это ж убиться проще.)) Занимательная математика меня как то не прикалывает.
Я не сдаюсь, просто хочется знать - возможно ли решение задачи без обучения в каком нибудь Гарварде, в какой-то там Америке?

m0rv1n

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Похоже заходить нужно где-то через год-полтора, посмотреть не выложил ли он пароль к архиву, если, конечно, этот вопрос еще будет интересен.

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
... В твоем коде формула или какой-то математический прикол? ...

Нет там никаких заумных формул. Всё для нормальных людей. В Clickermann'е всё что надо уже есть. Две функции в строке. В справке они есть. Их надо только вставить в скрипт и заполнить цифрами.
Из 3 функций получается 2 варианта этой конструкции. Одна из функций обязательна в обоих вариантах, и две другие на выбор.
Всё до смешного просто. Вот увидишь. :)


4.У.В.@.К

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Хорошо, я тут кое что уже придумал.)

4.У.В.@.К

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Вот, сделал.) Очень похоже на твоё описание. Три функции в двух вариантах. Прирост скорости в 1.4 раза с копейками, и выглядит очень просто.)) Смотрел и раньше на эту функцию, но отбросил её. всё дело было в знаке!
Щас братва подтянется и "вскроемся" вместе... ;)
https://yadi.sk/d/bcNah-O_ivT6vw

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Решение перешло в олимпиадную плоскость. Самое короткое, самое быстрое и, обычно, слабо применимое в реальном коде  :)

Я не смог выйти за рамки шаблонов. Всё что смог придумать при существующих ограничениях:
  • 1 строка
  • Не содержит функций STRLEN и STRCONCAT
  • Максимальная разрядность на выходе, не более 11
Правда там одна функция (в двух вариантах) и один оператор и скорость по тестам быстрее всего в 1.2 раза в среднем, чем
Code: (clickermann) [Select]
STRCONCAT(STRCUT("000000", 1, 6-STRLEN($x)), $x)
« Last Edit: June 11, 2020, 11:41:39 AM by Vint »


4.У.В.@.К

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Отвечаю :)
https://yadi.sk/d/2nLvO_PoI8eF8g

- одна функция,
- один оператор,
- 12 разрядов,
- скорость относительно кода STRCONCAT(STRCUT("000000", 1, 6-STRLEN($x)), $x) выше, в среднем в 1.45 - 1.5 раз. Тестировал на увеличении разрядов от 3 до 12.

Повторюсь, что в моем тестовом коде ошибка - http://crapware.aidf.org/forum/index.php?topic=5367.msg35251#msg35251 в строках 11 и 26. Там надо присваивать правильное значение переменным, а не удалять их через UNDEFINE, по этому результат теста получается не верный.

Так и не получилось у меня сделать строку более 12 разрядов. Какое то ограничение похоже в кликере. Будем думать...))
Первый архив остается на месте, мне не стыдно за тот код, просто тогда он мне казался лучшим. Вот.)

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
У меня получилось нечто похожее :) - 1 функция, 1 оператор, скорость примерно в полтора раза выше и от количества разрядов как бы не зависит.
Разрядов можно накидать сколько угодно. В моем примере их 25. Но с таким функционалом получается только один вариант скрипта (больше не искал, да вроде и не нужно).
От своего первого кода так-же не отказываюсь, он мне нравится. :)
https://yadi.sk/d/HjDCt7UFEkq6Sw