jQuery 대결


18

이 사건 후 얼마 후 …

있다 몇몇우리 의 jQuery이 더럽 히고 위해 반대하는 사람은. 그것은 거룩하지 않은 존재이며, 그 중 멸망 해야합니다 . 그러므로 나는 새로운 개혁의 왕국에 충성하는 여러분에게 그러한 저항을 제거 할 프로그램을 만들 것을 요구합니다. 모든 코드의 유효성을 검사하고 jQuery의 모든 추적을 검색해야합니다. 물론 제출 시간이 짧아야합니다 (또 다른 예산 삭감이 있었으며 불행히도 저장 부서에있었습니다). 그리고 문자를 제거 할 수 없습니다.

속도를 높이기 위해 디 필링 문자 는 다음 문자 중 하나 jJqQuUeErRyY$x0입니다. 말했듯이, 이러한 문자의 사용은 심지어 자신의 프로그램에서도 엄격히 금지됩니다. 따라서 사용하지 마십시오. 또한 숫자로 된 달러 기호도 괜찮습니다. 따라서 어떤 형식이든 n+(.nn)*$괜찮습니다 (여전히을 사용해서는 안됩니다 0).

프로그램 / 코드 등 입력 프로그램을 확인해야합니다. 제거 문자 가 포함되어 있으면 출력해야합니다 This programmer is guilty of Heresy. He must be burnt.. 그러한 문자를 찾지 못하면을 출력해야합니다 Program validated. Clearance level 2 given..

보너스 및 위약금

  • 나는 개인적으로 캐릭터를 존경합니다 ~. 당신이 사용할 때마다 -1 바이트를 줄 것입니다. (즉, 모두 ~무료입니다.)
  • 제외 된 문자에서 정확히 하나의 문자를 선택할 수 있습니다. 그런 다음 모든 경우에이 문자를 사용할 수 있습니다. 그러나 초기 페널티는 + 50 %이며 해당 문자의 모든 인스턴스에 대해 +5 바이트 페널티가 있습니다.
  • jquery소스 코드에서 인접한 문자를 사용하지 않으면 -90 %가됩니다 . 이들은 (또한) :iIkKpPsSzZXdDfF
  • 유효하지 않은 문자열이 주어질 때 위에서 언급 한 텍스트를 출력 할 때 유효하지 않은 모든 문자를 -1 *의 실행, 10 미만의 실행 및 []더 긴 실행으로 대체하면 -20 % 입니다.
  • 파일을 찾을 수 JavaScript/i없거나 파일 Simplex이름 이없는 경우 -50 바이트

참조 구현

function validate() {
  var str = document.getElementById("input").value;
  var str2 = str.replace(/[jquery0]/gi,"").replace(/x/g,"").replace(/(\d+\.*\d*\d*\$)|\$/g,"$1"); // thanks Doorknob!
  var val;
  if (str2 == str) {
    val = "Program validated. Clearance level 2 given.";
  } else {
    val = "This programmer is guilty of Heresy. He must be burnt.";
  }
  document.getElementById("output").value = val;
}
textarea{width: 600px;}
<textarea id="input" onkeyup="validate()"></textarea>
<br><br>
<textarea id="output" disabled></textarea>


1
Ee제한 ... 힘들 것
LegionMammal978

11
잠깐만 ... 출력 문장에 문자가 포함되어 있습니다-HYPOCRISY !!!
Mama Fun Roll

6
@molarmanful이 사악한 글자를 포함 할 수없는 프로그램입니다. 우리는 다른 사람들을 향한 사람들의 연설을 방해하지 말고, 거룩한 프로그래밍의 질에 해로운 것으로 분류 된 인물들의 사용을 방해합니다. Those who are blind cannot see, those who are deaf cannot speak. Those who use jQuery cannot be tolerated.
Conor O'Brien


5
도전 보너스를 지속적으로 편집 할 경우 -1입니다.
AdmBorkBork

답변:


20

CJam, 160 139 13.4 바이트

0000000: 22 cf 97 d9 87 d1 85 82 89 8d d1 db 8d 80 a8 af b3 a3  ".................
0000012: b0 b7 82 8e 80 bd c3 ca 89 85 d6 89 84 80 b2 c6 c7 d1  ..................
0000024: 7e ce d0 cd c5 d0 bf cb cb c3 d0 7e c7 d1 7e c5 d3 c7  ~..........~..~...
0000036: ca d2 d7 7e cd c4 7e a6 c3 d0 c3 d1 d7 8c 7e a6 c3 7e  ...~..~.......~..~
0000048: cb d3 d1 d2 7e c0 c3 7e c0 d3 d0 cc d2 8c 80 80 ae d0  ....~..~..........
000005a: cd c5 d0 bf cb 7e d4 bf ca c7 c2 bf d2 c3 c2 8c 7e a1  .....~..........~.
000006c: ca c3 bf d0 bf cc c1 c3 7e ca c3 d4 c3 ca 7e 90 7e c5  ........~.....~.~.
000007e: c7 d4 c3 cc 8c 80 9d 22 7b 39 33 7e 2b 7d 25 7e        ......."{93~+}%~

위는로 되돌릴 수있는 16 진 덤프입니다 xxd -r -c 18. 온라인으로 사용해보십시오.

코드 자체는 142 바이트 로 구성됩니다 . 총 16 ~ 문자 ( -8 바이트 )를 포함하지만 jQuery 인접 문자 ( -90 % )는 포함 하지 않습니다 .

작동 원리

경기는 n+(.nn)*$실제로 숫자 다음 달러 기호로 귀결됩니다 .

가장 먼저,

"<bunch of characters>"{93~+}%~

해당 문자열의 모든 코드 포인트에 -94 를 추가 하고 결과를 평가합니다.

실행 된 코드는 다음과 같습니다.

q       e# Read all input from STDIN.
9{      e# For each I in [0 ... 8]:
  )s    e#   Increment and cast to string.
  '$+   e#   Append a dollar sign.
  /s    e#   Split the input at occurrences. Flatten the result.
}/

"JQUERY$0"

_el+'x+ e# Append a lowercase copy and "x" to that string.
&       e# Intersect with the modified input.

"This programmer is guilty of Heresy. He must be burnt."
"Program validated. Clearance level 2 given."

?       e# Ternary if; select the corresponding message.

잘 됐네요 와.
Conor O'Brien

잘 했어. 보너스에 대한 슬픔으로 죄송합니다. 당신에 악영향 등 모든 것 몰랐어요
코너 오브라이언

6

Minkolang 0.9 , 346-3 = 343 바이트

가장 긴 프로그램입니다.

#66*68*d5*2:88*5+d5+d7+d1+d3+d4+6[3i+c48*+]2c"N"11-p(od4&k13w35*[dic=,5&kk11w] )
 725*35*48*68*3+5[66+c2~g2p]27*48*1-d2+d6+d8+5[9c2~g2p]37*67*d8+3[67+c2~g2p]55*57*2[77+c2~g2p]X11-2w
"This p og amm   is g ilt  of H   s . H  m st b  b  nt."(O).
 X2546*3[66+c2~g4p]44*d6+47*d3+d2+d8+6[9c2~g4p]X11-4w
"P og am validat d. Cl a anc  l v l 2 giv n."(O).

여기에서 시도하십시오.

설명

첫 번째 줄은 세 가지를 수행합니다 .1) 금지 된 문자로 스택을 쌓고, 2) 필요한 x곳에 많은 부분을 배치하고 (끝의 공간) 3) 입력을 통해 루프를 통해 적절한 줄로 건너 뜁니다. .

두 번째와 네 번째 줄은 같은 작업을 수행합니다. 다음 줄의 모든 간격을 적절한 문자로 바꿉니다. 그들은 끝에서 다음 줄로 점프합니다.

세 번째와 다섯 번째 줄은 단순히 필요한 문자열을 스택에 밀어 넣고 인쇄합니다.


Cooooooooooool!
Conor O'Brien

5

PHP, (204 * 1.5 + 5) * .1 = 31.1

<?=eval(~šœ—.ß..š˜ ’ž‹œ—×ØФ•ŽŠš.†££Û‡Ï¢Ð–ØÓ..š˜ .š.“žœš×ØФÎÒÆ¢Ô×££Ñ¤ÎÒÆ¢„Í‚ÖÀ££ÛÐØÓÝÝÓÛž.˜‰¤Î¢ÖÖÀØ«—–Œß...˜.ž’’š.ß–Œß˜Š–“‹†ß.™ß·š.šŒ†Ñß·šß’ŠŒ‹ß.šß.Š.‘‹ÑØÅد..˜.ž’߉ž“–›ž‹š›Ñß¼“šž.ž‘œšß“š‰š“ßÍߘ–‰š‘ÑØÄ);

이 덤프는 gnuwin32를 사용하여 작성되었습니다 hexdump. 로 반전하십시오 hex2bin.

00000000: 3C 3F 3D 65 76 61 6C 28 - 7E 9A 9C 97 90 DF 8F 8D |<?=eval(~       |
00000010: 9A 98 A0 92 9E 8B 9C 97 - D7 D8 D0 A4 95 8E 8A 9A |                |
00000020: 8D 86 A3 A3 DB 87 CF A2 - D0 96 D8 D3 8F 8D 9A 98 |                |
00000030: A0 8D 9A 8F 93 9E 9C 9A - D7 D8 D0 A4 CE D2 C6 A2 |                |
00000040: D4 D7 A3 A3 D1 A4 CE D2 - C6 A2 84 CD 82 D6 C0 A3 |                |
00000050: A3 DB D0 D8 D3 DD DD D3 - DB 9E 8D 98 89 A4 CE A2 |                |
00000060: D6 D6 C0 D8 AB 97 96 8C - DF 8F 8D 90 98 8D 9E 92 |                |
00000070: 92 9A 8D DF 96 8C DF 98 - 8A 96 93 8B 86 DF 90 99 |                |
00000080: DF B7 9A 8D 9A 8C 86 D1 - DF B7 9A DF 92 8A 8C 8B |                |
00000090: DF 9D 9A DF 9D 8A 8D 91 - 8B D1 D8 C5 D8 AF 8D 90 |                |
000000a0: 98 8D 9E 92 DF 89 9E 93 - 96 9B 9E 8B 9A 9B D1 DF |                |
000000b0: BC 93 9A 9E 8D 9E 91 9C - 9A DF 93 9A 89 9A 93 DF |                |
000000c0: CD DF 98 96 89 9A 91 D1 - D8 C4 29 3B             |          );|
000000cc;

(나는 보너스 / 페널티를 적용하는 순서가 혼란 스럽기 때문에 서면으로 주문을 가정했습니다.)

eval 문자 "e"를 사용합니다. PHP 문자열 반전 마법 덕분에 다른 모든 jquery 및 near-jquery 문자를 피할 수 있습니다.

반전 된 문자열에는이 코드가 포함되어 있습니다 (명확성을 위해 형식화 됨)

echo preg_match('/[jquery\\$x0]/i',
  preg_replace('/[1-9]+(\\.[1-9]{2})?\\$/',"", $argv[1]))
  ? 'This programmer is guilty of Heresy. He must be burnt.'
  : 'Program validated. Clearance level 2 given.';

이 코드에는 return 문 이 없으므로 evalnull을 반환하므로 <?=eval아무 것도 수행하지 않습니다. (그냥 피하는 것입니다 <?php)


1
난 당신이 그것과 조금 단순화 할 수 있다고 생각 [jquery$x0]하고 [1-9]+(\.[1-9]{2})?\$. 그건 그렇고, 자본 X은 문자를 제거하는 것으로 간주되어서는 안되므로 두 번째 정규 표현식은로 변경해야합니다 '/[1-9]+(\.[1-9]{2})?\$|X/'.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

먼저 더한 다음 곱하십시오. 실제 점수 : 31.35
ev3commander

4

> <> 184 바이트

"/6VO+K;[.N'G|(p
~<.1+f9o*-21-*5-1' ';!?l<"K),4):.{%:/27:'67m{X/6:):-86{/6%6/{i{42%6-m"
f +1.>"m'-)&9{69{'(&.{6S{m"'"(6)6S{5,{"'"'/2&4{(2{)6..:)4,)+{(23G"8
!^ag?/i:1+?
p>l?!^1' '5*@@-a

인쇄 할 수없는 파일의 경우에는 약간 짧을 수 있지만 재미를 위해 인쇄 가능한 버전이 있습니다. 코드 박스 외부에 있기 때문에 온라인 인터프리터에서는 작동하지 않습니다.

이 프로그램은 두 문자열을 다음과 같이 인코딩합니다.

G32({+),4):..6){2({4&2/'"{,5{S6)6("m{S6{.&('{96{9&)-'m
K),4):.{%:/27:'67m{X/6:):-86{/6%6/{i{42%6-m

155에서 빼는 각 코드 포인트입니다.

6V/O+K;[.N'G|(p

160에서 코드 포인트를 빼고 금지 된 문자를 인코딩합니다.

마지막 줄은 단순히 좌표 (forbidden char, 10)를 1로 설정하여 조회 테이블을 형성합니다. 그런 다음 네 번째 줄은 조회 테이블을 사용하여 각 입력 문자를 확인하여 1이 계속되면 이단 메시지를 출력합니다. EOF에서는 정리 메시지를 출력하기 위해 위로 이동합니다.


1

"자바 스크립트"840 * 2 + 14 * 5 = 1750;)

난 soooo 가까이있어, 그냥 r을 제거 할 방법을 찾아야 해

문자열에 비 인쇄 ASCII 문자가 여러 개 있으므로 Stack에서 여기에 코드를 붙여 넣을 수 없으므로 xxd의 16 진수 덤프가 있습니다.

0000000: 6576 616c 2868 3d27 272c 643d 5b7b 613a  eval(h='',d=[{a:
0000010: 5b2e 2e2e 2770 5b6c 1a6d 375e 695d 6f67  [...'p[l.m7^i]og
0000020: 5f68 6e28 5d6c 5f5b 6e5f 3f66 5f67 5f68  _hn(]l_[n_?f_g_h
0000030: 6e22 1c6d 5d6c 6327 5d2c 623a 367d 2c7b  n".m]lc'],b:6},{
0000040: 613a 5b27 7e27 5d2c 623a 2d31 347d 2c7b  a:['~'],b:-14},{
0000050: 613a 5b2e 2e2e 276e 1c23 356d 286d 6c5d  a:[...'n.#5m(ml]
0000060: 371c 2929 5d69 5e5f 2864 6b6f 5f6c 7328  7.))]i^_(dko_ls(
0000070: 5d69 6729 646b 6f5f 6c73 5c27 2c28 2b28  ]ig)dko_ls\',(+(
0000080: 2e28 646d 1c26 5e69 5d6f 675f 686e 285c  .(dm.&^i]og_hn(\
0000090: 5c69 5e73 285b 275d 2c62 3a36 7d2c 7b61  \i^s(['],b:6},{a
00000a0: 3a5b 277e 272c 277e 275d 2c62 3a2d 3134  :['~','~'],b:-14
00000b0: 7d2c 7b61 3a5b 2e2e 2e27 5f68 5e3d 6263  },{a:[...'_h^=bc
00000c0: 665e 226d 2326 1e22 1c1d 696f 6e1c 2328  f^"m#&."..ion.#(
00000d0: 705b 6622 686f 6666 1b37 1e22 1c1d 6368  p[f"hoff.7."..ch
00000e0: 1c23 2870 5b66 2223 286d 275d 2c62 3a36  .#(p[f"#(m'],b:6
00000f0: 7d2c 7b61 3a5b 277e 275d 2c62 3a2d 3134  },{a:['~'],b:-14
0000100: 7d2c 7b61 3a5b 2e2e 2e27 6663 6e22 1c1c  },{a:[...'fcn"..
0000110: 2328 6c5f 705f 6c6d 5f22 2328 6469 6368  #(l_p_lm_"#(dich
0000120: 221c 1c23 2867 5b6e 5d62 2229 275d 2c62  "..#(g[n]b")'],b
0000130: 3a36 7d2c 7b61 3a5b 277e 275d 2c62 3a2d  :6},{a:['~'],b:-
0000140: 3335 7d2c 7b61 3a5b 2e2e 2e27 6444 6b4b  35},{a:[...'dDkK
0000150: 6f4f 5f3f 6c4c 7353 1e2a 7257 7656 1e22  oO_?lLsS.*rWvV."
0000160: 391b 2227 5d2c 623a 367d 2c7b 613a 5b2e  9."'],b:6},{a:[.
0000170: 2e2e 275b 312d 395d 5b31 2d39 5d5c 5c2e  ..'[1-9][1-9]\\.
0000180: 293f 5b27 5d2c 623a 312d 317d 2c7b 613a  )?['],b:1-1},{a:
0000190: 5b2e 2e2e 272b 5c27 3357 2329 6123 391c  [...'+\'3W#)a#9.
00001a0: 275d 2c62 3a36 7d2c 7b61 3a5b 277e 275d  '],b:6},{a:['~']
00001b0: 2c62 3a2d 3436 7d2c 7b61 3a5b 2e2e 2e27  ,b:-46},{a:[...'
00001c0: 6c69 616c 5b67 1a70 5b66 635e 5b6e 5f5e  lial[g.p[fc^[n_^
00001d0: 281a 3d66 5f5b 6c5b 685d 5f1a 665f 705f  (.=f_[l[h]_.f_p_
00001e0: 661a 2c1a 6163 705f 6828 1c34 1c4e 6263  f.,.acp_h(.4.Nbc
00001f0: 6d1a 275d 2c62 3a36 7d2c 7b61 3a5b 277e  m.'],b:6},{a:['~
0000200: 275d 2c62 3a2d 3134 7d2c 7b61 3a5b 2e2e  '],b:-14},{a:[..
0000210: 2e27 6c69 616c 5b67 675f 6c1a 636d 1a61  .'lial[gg_l.cm.a
0000220: 6f63 666e 731a 6960 1a42 5f6c 5f6d 7328  ocfns.i`.B_l_ms(
0000230: 1a42 5f1a 676f 6d6e 1a5c 5c5f 1a5c 5c6f  .B_.gomn.\\_.\\o
0000240: 6c68 6e28 1c23 275d 2c62 3a36 7d5d 2e6d  lhn(.#'],b:6}].m
0000250: 6170 2864 3d3e 2876 3d27 272c 773d 642e  ap(d=>(v='',w=d.
0000260: 612e 6d61 7028 633d 3e53 7472 696e 672e  a.map(c=>String.
0000270: 6672 6f6d 4368 6172 436f 6465 2863 2e63  fromCharCode(c.c
0000280: 6861 7243 6f64 6541 7428 292b 642e 6229  harCodeAt()+d.b)
0000290: 292c 772e 666f 7245 6163 6828 287a 2c69  ),w.forEach((z,i
00002a0: 2c61 293d 3e7b 6966 2869 2532 2976 3d76  ,a)=>{if(i%2)v=v
00002b0: 2e63 6f6e 6361 7428 615b 692d 315d 2e63  .concat(a[i-1].c
00002c0: 6f6e 6361 7428 7a29 297d 292c 762e 636f  oncat(z))}),v.co
00002d0: 6e63 6174 2877 2e6c 656e 6774 6825 323f  ncat(w.length%2?
00002e0: 772e 706f 7028 293a 2727 2929 292c 642e  w.pop():''))),d.
00002f0: 666f 7245 6163 6828 287a 2c69 2c61 293d  forEach((z,i,a)=
0000300: 3e7b 6966 2869 2532 2968 3d68 2e63 6f6e  >{if(i%2)h=h.con
0000310: 6361 7428 615b 692d 315d 2e63 6f6e 6361  cat(a[i-1].conca
0000320: 7428 7a29 297d 292c 682e 636f 6e63 6174  t(z))}),h.concat
0000330: 2864 2e6c 656e 6774 6825 323f 642e 706f  (d.length%2?d.po
0000340: 7028 293a 2727 2929 0a                   p():'')).

1
헤더에 바이트 수를 포함하는 것이 일반적입니다.)
Conor O'Brien
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.