Вызов Кода - Cops And Robbers: Redacted Primality (Тема Cops')

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

Первоначально это испытание было создано в песочнице Magic Octopus Urn; Я принял и разместил это с его разрешения.

Это тема полицейских. Нить грабителей здесь.

Задача

  • Шаг первый: Напишите фрагмент кода (функцию или полную программу), который проверяет первобытность.
  • Шаг второй: Удалите фрагменты кода, заменив символы символом .isPrime() .
  • Шаг третий: Опубликуйте отредактированный код в теме полицейских.
  • Шаг четвертый: Подождите, пока ваш код будет взломан, и попытайтесь взломать чужой код.

Например, код Groovy {██.is█████()} could become {it.isPrime()} . is not a Groovy method.)


(Этот вариант было бы до глупости легко взломать; кроме того, я знаю,


Подсчет очков

  • Вы должны включить оценку своей программы в ее заявку. Оценка определяется как соотношение отредактированных символов к количеству символов. То есть, если в вашей программе было 20 символов и 5 из них были отредактированы, ваш балл будет 0,25. Приведенный выше код Groovy будет иметь оценку 0,5. Правила Ваша программа должна обрабатывать только
  • положительные целые числа.
  • Он должен выводить истинное значение, если число простое, и ложное значение в противном случае. Пожалуйста, укажите в своем ответе, что он выводит.
  • Ваш код не может содержать комментариев или ненужных пробелов. Никакого хеширования или криптографической обфускации. Ваш код может быть отредактирован не более чем на 50% (должна быть отображена не менее 1/2 символов). Это означает, что
  • самый высокий

Возможная оценка 0,5.

Если ваш ответ не будет взломан в течение недели, вы можете пометить его как безопасный и отредактировать в нужном ключе.

Победа

Danfodor_97


Рег
18 Mar, 2020

Тем
86

Постов
175

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

8086 DOS COM, 87 байт, оценка 19/87 ~= 0,2183

Взломано NieDzejkob

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 def p(x):

return ███(██████████████████(█,██))
 

Это программа COM; ожидает число в качестве аргумента командной строки, выводит Y или N. Ограничение: 65535, поскольку 16-битный процессор (sizeof(int) будет равен 2). На этой платформе новая строка — 0x0D 0x0A. Да, вы считаете 20 █ вместо 19 █. Один из них настоящий █ и его никто не заменил. Махахаха.

Пространство в позиции 10 на самом деле является нулевым байтом. Символ NUL аналогичен пробелу в старом шрифте VGA.

 

Bekjan1


Рег
30 Aug, 2018

Тем
82

Постов
233

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

Swift 4, оценка 26/170 ≈ 0,153, безопасно

M=(N,X=N,F=(n,a=█████)=>a>1e-20?█████+F(n,█████████):1,G=(n,a=█████)=>a>1e-20?█████+G(n,███████):n==2?0:G(n-1),H=(n,a=█████)=>a>1e-20?█████-H(n,███████):0,I=n=>████████I(████),J=n=>I(n)*████+H(█████████-1),K=(n,l=n|0)=>(n-l>=.5)+l,L=(a,b)=>██████████(a)+█(b)████,Z=L(--N,N)██)=>L(Z,████M(N,X)██)██

Попробуйте онлайн!

Предполагаемый взлом

p=lambda x,i=2:i>x/2or(x%i and p(x,i+1))or 0

Негольфед

p=lambda x,i=2:i>=x or(x%i and p(x,i+1))or 0 ||answer||

Brainfuck, 37/540 байт (оценка: 0,06851) (Взломано Нитродоном)

p=lambda x,i=2:█████or(x%i and ████████)████

Попробуйте онлайн!

Печатает «простое», если простое, и «не простое», если составное. Технически работает для произвольных целых чисел, но время ожидания TIO для чисел выше 6000

 

Юрий Собко


Рег
22 Oct, 2020

Тем
72

Постов
196

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

Функтоид, оценка = 14/223 ≈ 0,062780 [безопасно]

def p n;███████(██n.times████a[2..-1].map{|s|█.██n████s}██.█*█|██})█);end

Принимает входные данные в качестве аргумента командной строки и выводит Đ2⇹⁻ŘĐĐŁ₂`⁻⇹ʀĐ↔Đ5Ș↔⇹Ǥ1=эŕĐ↔Đ5Ș↔Đř²⇹%∈2*⁻↔Đ4Ș5Ș⇹⁻₂⇹3Ș°04Ș↔+3ȘĐŁ⁺3Ș05Ș↔+⇹04Ș0↔⇹%+=эŕ↔ŕĐĐŁ⁺⁺↔ł:↔ŕŕŕŕ;↔⁺⁻±э↔ŕŕŕ:;¬¬ (prime) or Đ2⇹█ŘĐĐŁ███⇹ʀĐ↔Đ5Ș↔⇹██=█ŕĐ↔Đ5Ș↔Đř█⇹█████↔Đ4Ș5Ș⇹██⇹3Ș°04Ș↔█3ȘĐŁ█3Ș05Ș↔█⇹04Ș0↔⇹██=█ŕ↔ŕĐĐŁ██↔██↔ŕŕŕŕ█↔████↔ŕŕŕ██¬¬ , попробуйте онлайн!

Подсказка (добавлена ​​через 4 дня после публикации):

Первый и 4-й Luvun kokonaislukuarvot ovat riippuen siitä,onko se yksi,joko listan,jonka alkioita ovat yksi █████████████████████,alkiot tai █████ liitettynä sen alkutekijöihin.Luku on alkuluku,jos sen kokonaislukuarvojen summa on nolla. are a red herring: The intended (and most likely каждый) IP-адрес решения будет следовать за первой строкой и достигнет Luku on alkuluku,jos ████████████e███████ on █████. character.

Решение

({}██()██<>){██({}[()])██{}{}███({<({}[()])><>({})<>}{}██████{}██){(({})){({}[()])<>}{}}<>([{}()]{}<>{})<>}(<>██{}({}████)((){[()]██{}██}{})

Попробуйте онлайн!

Объяснение

Из-за случайности, возникающей e█ec█s█ █c "██████WyAkKHNoIC1jICJg█WNobyBabUZqZEc5eWZIUnlJQ2█2SnlBblhHNG5m██JoYVd3Z0t6SjhkMk1nTFhjSyB8YmFzZTY0IC1kYCIpIC1lcSAxIF0K█b█se6███d`" it's not possible to flatten the program. Here's the flat program with a question mark where a random expression will be:

█]█Q ██Q{█M█P

Полная программа:

i;p(n){█████2███████ 0███████2;███;███)if(████)return 0;return 1;}

ÆPø“;;“»VOḣ2S⁵++3Ọ;”Pv :

███“;;█»VOḣ2S⁵++3Ọ;”Pv

2 , taking arguments 1 (самоотсылка), n and return e?n>1:n<3; (примечание n is the same as r )

e

int p(int n){int r=1,e=n%2;for(;(r++)*(r++)<n;e=e&&(n%r));return e?n>1:n<3;} is int p(int n){int r███████2;██r███r++)███+███n;████&███r));return███████n██;} где █h8575¥█ █UâÊ█Ê█ █2 is randomly chosen (depending on the random direction) from:

  • class X{public static void main(String[]args){System.out.println(new String(████████[Integer.parseInt(args[0])]).matches("█████████████")?███);}}
  • (({████){██[████)█>(({}))<>}<>{}███{}((██({}))█████{}]██)({}(<>))<>{(({})){({}[()])<>}{}}{}<>([{}()]{})██[██()██(()█[()]██{}██}{}<>{})
  • :1@v>~~:?1n; $-1<^?=2:}*{%@:$@:

Все они эквивалентны друг другу, поэтому :1@v>~~:?1n;█$-1<█?=2:}*{█@:$@: becomes the fix-point of:

let t=[2,3,3,3,3,3,3,5,7,5,7,5,7,7,11,12,13,11,13,13,1,2,17,13,2,3,17,19,23,29,19,19,41,23,23,29,23,"","",29,7,31,31,524,31,37,33,34,41]; function r(a, b) {█████████████████████████████████████████████████████████████};function l(t){let a=0;let b=[];while(true){b.push(t[a]);█████████████;if(!t[a]){return█████};function p(v) {let i=0;let a=r(2,v██);for (i in a){if(v%(█████████a█i██)==0){return false;}};return true;};function f(v){if(l(t).indexOf(v)!=-1){return true;}else{return p(v)};};

x=>{if(x<4)return(!0);for(y=x>>>Math.log10(p=████;--y-1;(p=x/y%1)████if(██&&(███))break████return(███)} is a pretty obfuscated expression that basically just does 1

 

Abuyek


Рег
02 Dec, 2019

Тем
85

Постов
218

Баллов
703
  • 26, Oct 2024
  • #5

Mathematica, 97 байт, оценка 0,2989690722 (Треснутый)

0

Струны! Регулярное выражение! Простые числа?

Там является такая вещь, как регулярное выражение для проверки простоты, но здесь происходит не это.

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

 

Contactef


Рег
31 Dec, 2005

Тем
78

Постов
205

Баллов
615
  • 26, Oct 2024
  • #6

Twicectelvelt


Рег
21 Mar, 2017

Тем
84

Постов
198

Баллов
648
  • 26, Oct 2024
  • #7

Октава, Оценка: 0,15 (86 байт)

Я раскрыл еще несколько персонажей. Я думал, что критерием победы было самый высокий оценка, а не самый низкий.

require███████████2<<2██>n█████rin█(b████████x)█████(9211█6830)██(a,c)=>a[c[0]██████████(c)]███████);d=███+n;q=████27775██9564,[502█59,█6])[█]);a=██q>0████r(n=q█a█&█-q-██)a██n%q?██0██(137152█8270,22288)(a)

Попробуйте онлайн!

Удачи =)

 

Xxrplx0


Рег
18 Nov, 2006

Тем
75

Постов
186

Баллов
581
  • 26, Oct 2024
  • #8

Python 3, 388 байт, .155, взломанный

Трещина в последнюю минуту. Да, это тест Миллера-Рабина.

Я полагаю, что вероятностные тесты разрешены, неопределенность 2^-100.

Ну, отличный намек в предыдущем предложении, хотя

Сделано возвращаемое значение 0 как COMPOSITE и 1 как PROBABLY PRIME.

*368 > 388: Исправлена ​​проблема, когда z<4.

1id#2#=(DD#2#-{d_.%(rD0R]D}drs]D1.=[1s]

Решение:

1id#█#=(DD#█#█{d_█%(█D0█]D}██s]D1.=[1s] ||answer||

095, оценка 0,20512820512 [Безопасно]

import random def f(z): if z<4:return z>>1 d,s,n,e,c=~-z,0,z,0,50 while not d&1:d//=2;s+=1 while n>0:n//=2;e+=1 random.seed() while c>0: a=0 while a<2or a>z-1: a,b=0,e while b>0:a=a*2+random.randint(0,1);b-=1 x,r=pow(a,d,z),~-s if ~-x and x!=~-z: while r>0: x,r=pow(x,2,z),~-r if not ~-x:return 0 elif x==~-z:break else:return 0 c-=1 else:return 1

Печатает 1, если простое число, 0, если составное.

Решение:

import ██████ def f(z): if z<4:return z>>1 d,s,n,e,c=██z,0,z,0,50 while not ██1:d//=2;s+=1 while n>0:n//=2;e+=1 ███████████() while c>0: a=0 while a<2or a>z-█: a,b=0,e while b>0:a=a*2+██████████████(0,1);b-=█ x,r=███(█,█,z),██s if ██x and x!=██z: while r>0: x,r=███(█,█,z),██r if not ██x:return 0 elif x==██z:break else:return 0 c-=█ else:return 1 ||answer||

Node JavaScript, оценка: 0,4

Вот где это работает. Полная программа, которая принимает входные данные из первого аргумента командной строки и выводит на стандартный вывод.

Надеюсь, это не такое уж сложное решение для начала.

С использованием этот фрагмент для расчета очков.

@(x)eval([(str2num(cell2mat([cellstr(reshape('0█1███1█0█0█00',████))])')█'█')','(x)']) ||answer||

Желе, оценка 0.(142857)

25██26█966836897364918299█0█1█65849159233270█02█837903312854349029387313█ị██v

Попробуйте онлайн!

Принимает аргумент командной строки.

Ложь = f[x_]:=(██ToString███████████████;StringMatchQ[████Infinity,RegularExpression@"█\█\█{█\█+, ███"])
Правда = f x (y-x)

 

12Charlesr


Рег
14 May, 2017

Тем
66

Постов
195

Баллов
575
  • 26, Oct 2024
  • #10

Javascript, оценка 0,1894093686354379

y -- recursive function with two arguments x,y g -- | base predicate: x > y (KZ) -- | base function: KZ x y -- | -> 0 == y {recursive_call} -- | recursive call

Удачи. :р

вызовите f с простым числом, которое вы хотите проверить.

 

Marama


Рег
26 May, 2006

Тем
70

Постов
181

Баллов
571
  • 26, Oct 2024
  • #12

Brain-Flak, Оценка: 35/134 = 0,2612 (треснул!)

S(CBO)(CBO)

Возвращает 1 для простого числа, 0 для составного.

Это очень сложный язык для решения этой задачи, поскольку форматирование настолько ограничено, что требуется приложить усилия, чтобы не сделать очевидным, какой именно символ отсутствует.

Это очень сложный язык для решения этой задачи, поскольку его до смешного трудно читать.

 

Byysinkaiy


Рег
25 Dec, 2013

Тем
67

Постов
190

Баллов
545
  • 26, Oct 2024
  • #14

Japt, 19 байт, 0,315789... оценка, Безопасный

Я не знаю, скрыл ли я больше, чем нужно, что стоило бы мне лучшего результата.

?

Посмотреть решение (Пояснение скоро появится)

 

999999999man


Рег
30 Nov, 2019

Тем
60

Постов
209

Баллов
519
  • 26, Oct 2024
  • #15

С, 34/76 = 0,447368, Безопасно

?(yg(KZ)(C(C(BB(BS(b(C(BBI)I))))(C(BC(b(C(BBI)I)))I))(C-)))

Наличие такого количества заготовок означает, что у меня будет гораздо больше шансов получить непреднамеренную трещину, чем запланированную.

Решение:

{divides}

объяснение:

B (S(BS(C(BC(C(BB(B{divides}I))I))0))) (C(BC(B(BB)(C(BBI)(B]I))))I) f x y -> (C(BC(C(BB(B{divides}I))I))0) x y (BC(B(BB)(C(BBI)(B]I)))) f I x y) -> (C(BC(C(BB(B{divides}I))I))0) x y (BC(B(BB)(C(BBI)(B]I)))) f I x y) -> (C(BB(B{divides}I))I) x y 0 (BC(B(BB)(C(BBI)(B]I)))) f I x y) -> (C(BB(B{divides}I))I) x y 0 ( B(BB)(C(BBI)(B]I)) f x I y) -> {divides} x y 0 ( C(BBI)(B]I) f x y ) -> if x `divides` y then 0 else C(BBI)(B]I) f x y -> f (B]I x) y -> f (] x) y -> f (x+1) y holds a boolean value of whether or not the number is not prime (with a few special case exceptions). False перебирает нечетные числа, меньшие или равные квадратному корню из 0 . y обрабатывает особые случаи, когда x is f или {recursive_call} .

 

Пожрник


Рег
18 Sep, 2006

Тем
61

Постов
182

Баллов
497
  • 26, Oct 2024
  • #16

М, оценка: 4/22 = 0,1818..., взломан Деннис

y -- recursive function with two arguments x,y G -- | base predicate: x >= y (BKL2) -- | base function: BKL2 x y | -> K(L2) x y | -> L2 y | -> 2 <= y {recursive_call} -- | recursive call

Это может закончиться непреднамеренной трещиной, посмотрим. Так оно и было.

Решения Денниса

{trial_division}

Попробуйте онлайн!

Я оставлю свое решение скрытым, чтобы кто-нибудь мог его взломать. Моим намеком Деннису на его подчинение грабителю было слово "зоопарк".

 

Pencho


Рег
26 Sep, 2009

Тем
68

Постов
199

Баллов
549
  • 26, Oct 2024
  • #17

C, 66 байт, 29 отредактировано, оценка 0,439

Y{trial_division} -- fix-point of {trial_division} 2 -- apply 2 (begin division with 2) $ -- apply argument (work with the supplied input) ; -- print result as boolean @ -- terminate program

Просто простая отправка C; Посмотрим, сколько времени это займет, прежде чем опубликовать действительно злое.

 

Eanueljt652


Рег
14 Aug, 2012

Тем
93

Постов
192

Баллов
687
  • 26, Oct 2024
  • #19

sh + coreutils, оценка 19/143 ~= 0,1328

треснутый

?

ТИО

 

Mlanvs4


Рег
03 Dec, 2005

Тем
76

Постов
178

Баллов
588
  • 26, Oct 2024
  • #20

Brain-Flak, оценка 29/140 = 0,207

Y(yG(BKL2)(B(S(BS(C(BC(C(BB(B(v S(CBO)( C B>vK BSBB())OK(BS(S? >(KZ)(C(C(Bv>O) > vY < ^)Sg3I)$; @>B(BS(b(C(BBI)Iv>(yg ())I)))I)IBB(C(b(CB(C())))<v)-C I))I))0)))(C(BC(B(BB)(C(BBv>))) ]I))))I))> >)2 $;@ >I)(B

Попробуйте онлайн!

Выходы 1 для простого числа и 0 для непростого числа.

 

PogsalaPlaugs


Рег
29 Mar, 2011

Тем
83

Постов
202

Баллов
637
  • 26, Oct 2024
  • #22

Тампио (обязательно), оценка: 26/223 = 0,11659...

||answer||

Пыть, оценка: 0.288288... [Безопасно]

False


Выводит «Истина», если простое число, и «Ложь», если нет.

Забыл упомянуть, что это вероятностный тест.

Решение:

True

Это реализует критерий простоты Соловея-Штрассена.

Попробуйте онлайн здесь!

 

Woleadade


Рег
01 Jun, 2016

Тем
80

Постов
199

Баллов
639
  • 26, Oct 2024
  • #23

Рубин, 27/73 = 0,369863

Y(yG(BK██)(B(S(BS(C(BC(C(BB(B(v S(CB█)(█C█B>vK BSBB())█K(BS(S? >(KZ)(C(C(Bv>██ > v██< █)Sg3I)$; @>B(BS(b(C(BBI)Iv>(█g ())I)))I)IBB(C(b(CB(C())))<v)█C I))I))0)))(C(BC(B(BB)(C(BBv>))) ]I))))I))> >)█ $;@ >I)(B

Это должно быть весело.

 

Josh21386


Рег
24 May, 2016

Тем
91

Постов
195

Баллов
660
  • 26, Oct 2024
  • #24

Python 3, оценка: 0,386363, треснутый

>>>>>+>,[>++++++[-<-------->]<+>,]<[-[█<█<]++++++++++<]>[-]>>██[>█>>█>]+[<]<<[<]>█<<+>>[>]█>[>]█+[<]<<[<]>-█>]>>[->]<[-[[<]<]++++++++++<]>[-]>[<█]>]>[>]<[[█]<]<<<<<[<]<<██>>[>]<█[->+<]<█>>[>]<[-[[<]<]++++++++++<]>███>[<<]>[[[>]>████[<]<[-[[<]<]++++++++++<]>[-]>[█<]>]>[>]<[[-]>+[>]<-<[<]<]+<<<<<[<]>[[>]+[[>]>]>[>]>[-<+>]<[<]<[>+[<]>>-<<<<<[[<]<]>>███████>[[█]>]<]<[[<]<]<[█]>]>>>[[>]<->>]]>[[>]>]<<[[[█]<]<]<<<[█]<<█>>>[>]█[-[[<]<]++++++++++<]>>[[>]+[------->++<]>.+.+++++.[---->+<]>+++.>>]>[>]+[------->++<]>++.++.---------.++++.--------.

Идя на Действительно поначалу низко висящие плоды. Скоро я придумаю дерзкий ответ.

user71546 заставил его «работать» с

func p(n:Int)->Bool{ func j(_ l:Int,_ k:Int)->Int{ // Modulus function (l mod k) var h=(1...l).map{$0},m=l // Create an array h of size l while(m=h.count,m>k).1{ // While h has more than k elements: h=[Int](h[k...]) // Remove k elements from h } return m // Return the length of h (equal to k if l divides k) } return n>1&& // Test if n > 1 (2..<n).index{j(n, $0)>=$0}==nil // and no number from 2 to n-1 divides n }

...но это было непреднамеренно. Исходный код был

func p(n:Int)->Bool{func j(_ l:Int,_ k:Int)->Int{var h=(1...l).map{$0},m=l while(m=h.count,m>k).1{h=[Int](h[k...])};return m} return n>1&&(2..<n).index{j(n,$0)>=$0}==nil}

Оказывается, ни то, ни другое не работает при x<2. Упс.

 

Bvu


Рег
28 Sep, 2011

Тем
58

Постов
207

Баллов
517
  • 26, Oct 2024
  • #25

JavaScript (ES7), 297 байт, 103 отредактировано, .347

func p(n:Int)->Bool{func █(_ █:Int,_ █:Int)->Int{var h=(1...l).map{$0██m██ while(m=h.count,m██).1{h=[Int](h[█...])};return m} return █>██&(█.███).index█j█n██0)>=█0}█=██l}

Мой предыдущий ответ на Python был слишком простым, так что вот злой ;)

Хотя логика проста.

 

Aspirin103


Рег
11 Jun, 2011

Тем
86

Постов
206

Баллов
646
  • 26, Oct 2024
  • #26

Python 3, 48 байт, 24 отредактированных, .5

1└╣██1█╛ü ¼<█t<< u≈¼<█t█,0|/<██+ô≈ßô☺├δδâ√█|█╞█S█Y╣██9┘t█ë╪1╥≈±○╥t█Aδ∩╞█S█N┤█║S█═!├A $

Простой ответ, вероятно, будет решен менее чем за 24 часа.

 

Abbelov


Рег
04 Mar, 2008

Тем
72

Постов
208

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

Интересно