Напишите Программу, Которая Завершает Работу Через 60 Секунд - Тема Cops'

  • Автор темы JEXTpasypaype15
  • Обновлено
  • 23, Oct 2024
  • #1

Это вызов копам и грабителям - Нить грабителя

Напишите программу, которая завершается ровно через 60 секунд (или как можно ближе к этому). Например:

 Safe 

Однако ваша цель — написать эту программу так, чтобы завершение работы ровно через 1 минуту по сути было присущий к выполнению программы - должно быть сложно изменить программу, чтобы она предсказуемо работала в течение другого промежутка времени без пересмотра алгоритма. Грабители попытаются изменить вашу программу так, чтобы она завершила работу после 31 секунд вместо 60, и им придется делать это с решением, Расстояние редактирования Левенштейна составляет до половины длины вашего представления.

Если вы не хотите использовать системные прерывания или системные часы, вы можете использовать одно из следующих действий:

  • Скорость печати до [Cracked](link to cracker) is controlled by the baud rate of the terminal you are printing to. If you wish, you can control the speed of your program by printing to stdout с заданной скоростью передачи данных. Однако вы также должны указать фактическое оборудование или терминальную программу, которая имеет эту скорость передачи данных по умолчанию (например, последовательный принтер со скоростью печати по умолчанию 300 бод).
  • Если вы работаете с языком, где все операции занимают некоторое постоянное время (например, с языком ассемблера), вы можете контролировать скорость своей программы, указывая тактовую частоту процессора. Однако это также должно сопровождаться ссылкой на реальный процессорный чип, работающий на этой скорости (например, 6502 с частотой 1 МГц, установленный в платах Apple //e и NES).

Это полицейские и грабители, так что приготовьтесь неукоснительно защищать свой алгоритм! Если ваше решение было взломано, поставьте stdout in your header. If your solution remains uncracked after exactly 2 недели, это застраховано от будущих попыток взлома - ставьте #include <unistd.h> int main(int argc, char **argv){ sleep(60); return 0; } in your header and explain how your algorithm works.

Победителем этого конкурса станет безопасное решение, набравшее наибольшее количество голосов.

#полицейские и грабители

JEXTpasypaype15


Рег
25 Oct, 2024

Тем
67

Постов
210

Баллов
585
  • 26, Oct 2024
  • #2

Perl 52 байта (разрешено 26 изменений) (технически безопасно)

 
 
 
 
 
 
 .d*T6
 

К сожалению, я не думаю, что возможно написать невзламываемую программу на Perl (должно стать очевидным, почему, если и когда она будет взломана; возможность редактировать половину программы - это слишком много), но этот алгоритм должно быть очень сложно изменить. ждать любое время, кроме 1 минуты.

Отмечаем это как безопасное, поскольку никто официально не представил кряк в течение 14 дней (хотя кто-то неофициально взломал его, просто написав отдельную программу и закомментировав существующий код). Основная идея программы такова: мы смотрим на цифру секунд времени, повторяем цикл до тех пор, пока она не изменится, затем цикл до тех пор, пока она не вернется к исходному значению. Для этого требуется немало изменений, чтобы изменить продолжительность времени, отличную от 1 минуты, 1 часа или 1 дня (хотя 26 изменений достаточно легко — вы можете выполнить модульную арифметику со значением секунд, чтобы определить новую цель, которую нужно ждать до тех пор, пока — но никто не нашел этого решения).

 

Jhlk


Рег
19 Aug, 2011

Тем
63

Постов
191

Баллов
536
  • 26, Oct 2024
  • #3

Желе, 30 байт, треснутый

[[3w]5*]4*; [ ]4* execute this 4 times [ ]5* execute this 5 times 3w wait 3 seconds ; terminate program

Это невозможно проверить онлайн, поскольку у TIO тайм-аут составляет 60 секунд.

Проверка

timecmd

Как это работает

Натуральный логарифм ( λ timecmd reticular test.ret command took 0:1:0.38 (60.38s total) ) of 69266249554160949116534784 является 59.5. [[3w]5*]4*; sleeps that many seconds before returning its left argument. Adding the wait time to the 500 мс время загрузки Jelly (в основном затрачиваемое на загрузку SymPy и NumPy) дает время выполнения примерно одну минуту. Это процессор Core i7 третьего поколения с тактовой частотой 3,40 ГГц и твердотельный накопитель. Время загрузки, естественно, будет отличаться на других компьютерах.

 

Ata8ahyr


Рег
12 Jun, 2014

Тем
66

Постов
198

Баллов
528
  • 26, Oct 2024
  • #4

сетчатый, 11 байт, Треснутый

œS

Бег:

Æl

( $ time jelly eun '69266249554160949116534784œSÆl' 69266249554160949116534784 real 1m0.033s user 0m0.433s sys 0m0.041s link)

Объяснение

69266249554160949116534784œSÆl ||answer||

Pyth — 5 байт (допускается расстояние 2) Треснутый.

sub a{[gmtime+time]->[0]^$x}$x=a;0 until a;0 while a

Возиться с этим онлайн (хотя время ожидания истекает через 60 секунд).

 

Crychosse42


Рег
09 Dec, 2020

Тем
64

Постов
213

Баллов
563
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно