차이는 차이가 없어야합니다


40

귀사는 최근에 매우 헌신적 인 새로운 시스템 관리자를 고용했습니다 . 그들은 단지 컴퓨터 화면을 보는 것이 상당히 제한적이라고 생각합니다 (즉, 60Hz 재생 빈도로는 충분하지 않습니다). 따라서 CPU 데이터 버스를 DAC에 연결하고 서버 룸을 통해 스피커에서 재생하여들을 수 있습니다. ~ 20kHz. 한 가지 문제는 전기 기술자가 아닌 시스템 관리자이며 스피커 설정이 계속 끊어지고 있다는 것입니다. 소프트웨어 엔지니어가 메인 프레임에서 컴파일하는 코드의 바이트 값이 너무 급격하게 변경 되었기 때문이라고 생각했습니다. sysadmins는 이제 스피커 설정에 가장 적합한 코드를 만들 수있는 사람을 찾기 위해 약간의 경쟁을 주최하고 있습니다.

도전

당신의 임무는 연속 바이트 사이에 가능한 적은 차이가있는 선택한 언어로 프로그램 이나 함수 를 만드는 것입니다 (계산 섹션 참조). 이 프로그램은 자체 점수를 계산하는 작업이 있습니다.

입력

ASCII 문자열 stdin또는 해당 언어와 가장 유사한 ASCII 함수를 작성하는 경우 함수 입력으로 사용됩니다. 점수를 계산하려면 프로그램 자체를 입력으로 사용해야하므로 프로그램에 유니 코드가 포함되어 있으면 유니 코드를 지원해야합니다. 그렇지 않으면 ASCII로 충분합니다. 입력은 2 바이트 이상인 것으로 가정 할 수 있습니다.

계산

문자열의 각 문자는 ASCII 표준을 사용하여 동등한 숫자로 변환됩니다. 그런 다음 모든 문자의 차이를 먼저 제곱 한 다음 합산 합니다. 예를 들어, 문자열 abd의 점수는 1²+2²=5입니다.

산출

출품작에 대한 제목이 출력됩니다. 즉, 앞에 추가 #하거나 줄 바꿈과 -(대시)를 추가해야합니다 . 그런 다음 프로그래밍 언어의 이름, 쉼표, 공백 및 계산 결과를 나타내는 정수를 출력해야합니다. 예를 들어

#C++, 98

유효한 출력이 될 것입니다. 출력은 stdout언어 또는 가장 가까운 언어 로 제공 되거나 함수에 대한 반환 값으로 제공되어야합니다.

채점

당신의 점수는 프로그램 자체에 의해 입력 된 값으로 프로그램에 의해 계산 된 값이 될 것입니다.

편집 : 지금 줄 바꿈을 처리해야합니다. 미안합니다.

점수 계산을 확인하는 Pyth 스크립트는 다음과 같습니다 .


1
프로그램이 자체 코드 이외의 것을 해석해야합니까? 그리고 명확히하기 위해 두 개의 연속적인 동일한 문자는 0의 값입니까?
Daniel M.


1
@bopjesvla 파인. 임의의 끈이지만 우주에 적합하다고 가정 할 수 있습니다. 또는 컴퓨터에서 그 문제를 해결하십시오.
Sanchises

11
단항 승리 에서 유효한 답변을 만든 첫 번째 사람 !
ETHproductions

3
너무 늦었지만 단항식 응답을 방지하는 한 가지 옵션은 동일한 문자 간의 차이를 1로 정의하는 것이 었습니다. 또한 논리를 조금 더 흥미롭게 만들었을 것입니다.
Reto Koradi

답변:


19

CJam, 1051 827 643 569 545 407 327 279 235 233 229

''"','#'C'J'a'm',' qYew::-Yf#:+e#'''''''''"
f{-ci'(*''2*\}'^,40>"*/:N"-"][ZZ[\^__`bcdgimpstsz{}~~~"

위의 프로그램은 실제 소스 코드를 생성하는데, 길이는 1,179,112 바이트입니다.

테스팅

Java 인터프리터를 사용하면 다음 과 같이 소스 코드를 생성하고 테스트 할 수 있습니다.

$ alias cjam='java -jar cjam-0.6.5.jar'
$ cjam gen.cjam > diff.cjam
$ cksum diff.cjam 
896860245 1179112 diff.cjam
$ cjam diff.cjam < diff.cjam
#CJam, 229

대체 버전

36 점 – 최종 점수 265 점 – – 소스 코드를 99.92 % 더 짧게 만들 수 있습니다 :

'''()))))(''''(((('''())))))))))))))))))))))))))))('''()))))))))))))))))))))))))))))))))))('''())))))))))))))))))))))))))))))))))))))))))))))))))))))))))('''())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))('''()))))(''''((((((('())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))('())))))))))))))))))))))))))))))))))))))))))))))))))('())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))('())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))('()))))))))))))))))))('()))))))))))))))))))('())))))('())))))))))))))))))))))))))))))))))))))))))))))))))('()))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(''(((('()))))))))))))))))))('())))('())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(''((((''''''''''''''''''()+,-.0123456789;<=>?@ABCDEFGHIJKLMOPQRSTUVWXYZ[\]][ZZ[\^__`bcdgimpstsz{}~~~

CJam 인터프리터 에서이 버전을 온라인으로 사용해 볼 수 있습니다 .

생각

우리는 코드를 실행하고 싶습니다

'#'C'J'a'm',' qYew::-Yf#:+

점수를 가능한 한 낮게 유지하십시오. 이를 위해 캐릭터별로 문자열을 작성하고 (전후에 몇 번의 노프없이) 결과를 평가합니다.

다행히도 '(푸시 문자 리터럴), ((감소) 및 )(증가)는 연속적인 ASCII 문자이므로 임의의 문자를 입력하는 것이 상대적으로 저렴합니다.

  • ASCII 문자 '이후는로 푸시 할 수 있으며 '()…)(여기서 )코드 수 는 코드 포인트 에 따라 다릅니다.

    예를 들어 +로 푸시 할 수 있습니다 '())))(. 사이의 거리 '(, 그리고 ()트레일은 1이다 )(서로 상쇄; 그들의 유일한 기능은 '다음 문자 (다음 문자에 해당)를 연속 문자 로 포장하는 것입니다 .

    이 방식으로 밀린 캐릭터는 점수를 4 점 올립니다.

  • 이전의 ASCII 문자 '는로 푸시 할 수 있으며 ''(…(여기서 (코드 수 는 코드 포인트 에 따라 다릅니다.

    예를 들어 #로 푸시 할 수 있습니다 ''((((. 사이의 거리 '(1이다.

    이 방식으로 밀린 캐릭터는 점수를 2 점 올립니다.

  • ''(…(실제로 문자 는 16 비트이고 줄 바꿈 되므로 모든 ASCII 문자에서 작동합니다 . 예를 들어, 을 누른 다음 65,532를 누를 수 있습니다 .+''(

    이 기술은 1.2MB 버전의 코드에서 사용됩니다.

  • 캐릭터 '를로 밀면 ''점수에 영향을주지 않습니다.

암호

e# Push these characters on the stack: ','#'C'J'a'm',' qYew::-Yf#:+e#'''''''''

''
'()))))(
''
''((((
''
'())))))))))))))))))))))))))))(
''
'()))))))))))))))))))))))))))))))))))(
''
'())))))))))))))))))))))))))))))))))))))))))))))))))))))))))(
''
'())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(
''
'()))))(
''
''(((((((
'())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(
'())))))))))))))))))))))))))))))))))))))))))))))))))(
'())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(
'())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(
'()))))))))))))))))))(
'()))))))))))))))))))(
'())))))(
'())))))))))))))))))))))))))))))))))))))))))))))))))(
'()))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(
''((((
'()))))))))))))))))))(
'())))(
'())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(
''((((
''
''
''
''
''
''
''
''
''()

+                         e# Concatenate the two topmost single quotes.
,                         e# Push the length of the resulting string (2).
-.0123456789              e# Push that number.
;                         e# Discard it from the stack.
<                         e# Compare a single quote with 2. Pushes 0.
=                         e# Compare a single quote with 0. Pushes 0.
>                         e# Compare a single quote with 0. Pushes 1.
?                         e# Ternary if. Discards a single quote and 1.
@                         e# Rotate the remaining three single quotes.
ABCDEFGHIJKLMOPQRSTUVWXYZ e# Push 25 items on the stack.
[\]                       e# Swap the last two and wrap them in an array.

e# So far, we've pushed the elements of "','#'C'J'a'm',' qYew::-Yf#:+e#'''"
e# followed by the elements of [10 11 12 13 14 15 16 17 18 19 20]
e# and ["" "" "" 3.141592653589793 "" "" " " 0 0 0 -1 1 [3 2]].

]    e# Wrap the entire stack in an array.
[    e# Begin an array. Does nothing.
ZZ   e# Push 3 twice.
[    e# Begin an array. Does nothing.
\^   e# Swap both 3s and push the bitwise XOR. Pushes 0.
__   e# Push two copies.
`    e# Inspect the last copy. Pushes the string "0".
b    e# Convert "0" from base 0 to integer. Pushes 48.
cd   e# Cast 48 to Character, then Double. Pushes 48.0.
gi   e# Apply the sign function, then cast to integer. Pushes 1.
mp   e# Check 1 for primality. Pushes 0.
s    e# Cast the result to string. Pushes the string "0".

e# We now have three elements on the stack: an array, 0, and "0"

t    e# Set the element at index 0 of the array to the string "0".
s    e# Cast the array to string.

e# This pushes the string consisting of the characters
e#     0,'#'C'J'a'm',' qYew::-Yf#:+
e# and
e#     e#'''10111213141516171819203.141592653589793 000-1132
e#
e# When evaluated this does the following:
e#   0,                Push an empty array. Does not affect output.
e#   '#'C'J'a'm','     Push the characters of "#CJam, ".
e#   q                 Read all input from STDIN.
e#   Yew               Push the overlapping slices of length 2.
e#   ::-               Reduce each pair of characters to their difference.
e#   Yf#               Square each difference.
e#   :+                Add the results.
e#   e#…               Comment. Does nothing.

z    e# Zip. This wraps the string on the stack in an array.
{}~  e# Execute an empty block.
~    e# Unwrap the array.
~    e# Evaluate the string.

6
........... wat
DLosc

이 언어는이 정확한 도전을 위해 만들어진 것처럼 보입니다. 좋은!
도미노

3
제길. CJam은 종종 '초기'기호와 '후기'문자가 혼합되어 있기 때문에 CJam을 불리하게 만드는 도전을했다고 생각했습니다. 그러나 nooooo, 당신은 나타나서 다시 망치고 ... 건배!
Sanchises

7

하스켈, 152827 95742 91196 83921 77447 71742

a=(.);_ZYXWVUTSRQPONMLKJIHGFEDCBA=("#Haskell, "++)`a`show`a`sum`a`fmap(^2)`a`(tail>>=zipWith(-))`a`fmap fromEnum`a`(""++)

사용법 (참고 : "이스케이프해야 함) :

_ZYXWVUTSRQPONMLKJIHGFEDCBA   "a=(.);_ZYXWVUTSRQPONMLKJIHGFEDCBA=(\"#Haskell, \"++)`a`show`a`sum`a`fmap(^2)`a`(tail>>=zipWith(-))`a`fmap fromEnum`a`(\"\"++)"

"#Haskell, 71742"

빈 문자열 ""을 입력 문자열 앞에 추가하여 Haskell 인터프리터가 유형을 파악하는 데 도움이됩니다. 형식 유추가 없으면 코드가 너무 다형성입니다. 나머지는 평소와 같이 비즈니스입니다 : 각 문자를 ASCII로 매핑하고 이웃 차이점, 사각형, 합 및 언어 언어 이름 목록을 만듭니다.


6

> <>, 30227

0&ii:0(?v:@-:*&+&20.
'#><>, '<;n&oooooo

가, 제목이 내 점수를 두 배로 늘렸다. 내 프로그램의 말로, n & oooooo! 나중에 이것을 개선하기 위해 시간이 좀 걸릴 것입니다. 또한 온라인 통역사에 실제로 줄 바꿈을 입력 할 수 없으므로 공식 점수에 입력 스택을 채우는 방법이 확실하지 않기 때문에이 점수가 떨어질 수도 있습니다.

결코 완전히 최적화 된,하지만 걸리는 전체 명령의> <>의 (적어도 ASCII 문자의 측면에서) 상대 근접의 몇 가지 장점을. 줄 바꿈을 입력으로 쉽게 제출 할 수 없으므로 Pyth 점수 검사기를 사용했지만 사용한 무작위 테스트 사례와 일치하므로 그와 관련하여 괜찮습니다.

다음은 점수가 30353 인 항목입니다 (한 줄이므로 정확해야 함).

0&l1=66+*77++0.$:@-:*&+&10.' ,><>#'oooooo&n;

> <>의 경쟁 업체입니다!
Sanchises

5

자바, 66465 65506 62434

놀랍도록 짧습니다. 문자열 대신 char 배열을 허용합니다.

ABCD->{int A98=0,GFEDCBA=1,A987;for(;GFEDCBA<ABCD.length;A98=A98+(A987=ABCD[GFEDCBA]-ABCD[GFEDCBA++-1])*A987-0);return"#Java, "+A98;}

최고의 변수 이름을 생성하기 위해 프로그램을 사용했습니다.


프로그램에서 이것을 어떻게 사용 하시겠습니까? (아직 Java 8 기능에 익숙하지는 않습니다)
aditsu


아, 그래서 당신은 대상 객체 인터페이스를 정의해야합니다 ... 정확히 일류 객체가 아닙니다.
aditsu

@aditsu 원한다면 Function <char [], String>을 사용할 수도 있습니다.
TheNumberOne

((Function<char[],String>) ABCD->{…}).apply(…), 알겠습니다 … 고마워요 이러한 람다는 유형 컨텍스트가 없으면 매우 불완전한 것으로 보입니다.
aditsu


4

Windows PowerShell ISE 호스트, 62978 63894 67960 77050

PARAM($4)($4.LENGTH-2)..0|foreach{$9=+$4[$_]-$4[$_+1];$0+=$9*$9};'#'+$HOST.NAME+', '+$0

편집- $A변수를 제거 하고 대신 문자열을 거꾸로 세고 일부 키워드를 CAPS로 변환 하여 포인트를 저장했습니다.

Edit2- $($HOST.NAME)대신에 더 많은 포인트를 저장했습니다PowerShell

Edit3-변수 이름을 바꾸어 더 많은 포인트를 저장하고 출력 생성 방법을 변경했습니다.

숫자가 더 가까울수록 숫자로 명명 된 변수를 사용 $하므로 페널티가 적습니다.

정기적 인 골프 기술을 사용 하지 않는 것이 흥미 롭습니다 . 예를 들어, |%{$22534 인 반면 |foreach{$8718입니다.

이것은 기술을 변경하지 않고 최적에 가깝습니다.


1
이이었다 정확히 내가 바라던. 건배!
Sanchises

4

MATLAB, 19214 39748 39444 38785 37593

@(A9876543210)sprintf('#MATLAB, %d',diff(A9876543210)*diff(A9876543210'))

차이 수를 더 줄인 Luis Mendo에게 감사드립니다!

입력 변수 이름을 변경하여 노이즈 수를 줄인 NumberOne에 감사합니다!

작동 원리

  1. ansMATLAB 의 기본 변수에 저장된 익명 함수를 선언합니다
  2. 이 함수는 저장된 문자열 A9876543210을 받아서 문자열의 이웃 제곱 차이의 합을 인쇄합니다.
  3. diff배열에서 쌍으로 인접한 차이를 찾고의 배열을 생성합니다 length(A9876543210)-1. diff문자열 배열 을 사용 하면 double각 문자의 ASCII 코드가 생성되고 연속 쌍의 차이로 인해 다른 배열이 생성 되는 배열로 캐스트됩니다 .
  4. 제곱 차이의 합을 찾으려면이 차이 배열의 내적을 자신의 값으로 바꾸면됩니다. 이렇게 diff(A9876543210)'실제보다 더 소음이 발생 A9876543210.'(감사 루이스 Mendo!)
  5. 결과가 화면에 인쇄됩니다.

명명되지 않은 기능을 허용하는 것이 PPCG에서 일반적입니다. 그래서 당신은 제거 할 수 있습니다A=
Luis Mendo

또한, norm(diff(B))^2더 짧습니다
Luis Mendo

@LuisMendo-시도했습니다. 과학적 표기법을 인쇄하고을 존중하지 않습니다 %d.
rayryeng-복원 모니카

B변수 이름으로 사용합니까? 범위가 A=@(A)...있기 때문에 유효한 MATLAB A입니다.
Sanchises

3
A-> A9876543210
TheNumberOne

4

Q 기본, 38140

SHYY SYNTAX를 위해 예

LINE INPUT A9876543210$:AAA=ASC(A9876543210$):WHILE A<LEN(A9876543210$):AA9876543210=AAA:A=1+A:AAA=ASC(MID$(A9876543210$,A)):A98765432100=A98765432100+(AA9876543210-AAA)*(AA9876543210-AAA):WEND:?"QBasic,";A98765432100

( QB64로 테스트되었습니다 .)

이것은 문자열을 입력하고 답을 출력하는 전체 프로그램입니다. 여기서 유일한 제한 사항은 프로그램 LINE INPUT이 여러 줄 입력을 할 수 없다는 것입니다 ( 단일 줄인 한 아무 것도 처리 할 수 ​​있음).

난독 처리 :

LINE INPUT line$
b=ASC(line$)
WHILE i<LEN(line$)
    a=b
    i=i+1
    b=ASC(MID$(line$,i))
    score=score+(a-b)*(a-b)
WEND
PRINT "#QBasic,"; score

편리하게는 여러 문자 문자열을 전달 ASC하여 첫 번째 문자의 ASCII 값 을 제공합니다. 또한 편리하게 숫자 변수는 0으로 자동 초기화됩니다.


이전에 QBasic으로 코딩 한 적이 없으므로 잘못하면 저를 용서하십시오.하지만 변수를 대문자로 바꾸어 추가 포인트를 저장할 수 있습니까?
ASCIIThenANSI

@DLosc 아, 알겠습니다. 난독 처리 버전을 실제 프로그램으로 읽었습니다. : |
ASCIIThenANSI

3

파이썬 2, 91026

lambda A:"#Python 2, "+`sum((ord(A9876543210)-ord(A98765432100))**2for A9876543210,A98765432100 in zip(A,A[1:]))`

문자열을 가져와 점수를 반환하는 익명 함수를 정의합니다. 온라인으로 사용해보십시오 .

이것의 대부분은 매우 간단한 기능 구현입니다 : zip Awith A[1:]으로 문자 쌍 목록을 얻은 다음 ords, square 및 sum을 제너레이터 식으로 뺍니다 .

발전기 식 내부의 두 변수는 오직 다음과 같은 문자가옵니다 것을 관찰 : ), ,, 공간. 이 세 가지 모두 ASCII 값이 매우 낮으므로 가능한 한 ASCII 값이 낮은 문자로 각 변수를 끝내야합니다. 파이썬에서 변수를 끝낼 수있는 가장 낮은 문자는 0입니다. 또한, 모든 기회를 우리가 점수를 낮출 두 개의 작은 점프로 하나의 큰 점프를 분할해야 : A0289 비용,하지만 A90단지 (145)과 A9876543210하찮은 73입니다.

(이 방법은 하지 않았다 람다 변수에 도움 A이 뒤에있어 아마 때문에, [하나 명 발생한다.)


3

JSFuck, 144420642

다음에서 빌드하십시오.

t=arguments[0];n=0;for(u=1;u<t.length;++u)n+=(f=t.charCodeAt(u)-t.charCodeAt(u-1))*f;return'#JSFuck, '+n

이것을 JSFuck.com 의 작은 입력 상자에 붙여 넣어 JSFuck 으로 컴파일하십시오. 결과는 112701 자 길이의 스크립트이므로 여기에 넣을 수 없습니다. 이 스크립트의 마지막 두 문자는 괄호로, 입력 사이에 입력하십시오.

...)[+!+[]])('abd')

내 컴퓨터에서 프로그램을 평가하는 데 거의 20 초가 걸립니다.


설명

나는 이것에 대해 더 많은 시간을 할애하여 앉아서 변수 이름을 최적화하려고했습니다. 다음은 점수 순서대로 사용할 가치가있는 변수 이름입니다.

u     ([][[]]+[])[+[]]                    17237
n     ([][[]]+[])[+!+[]]                  17437
f     (![]+[])[+[]]                       18041
t     (!![]+[])[+[]]                      18041
a     (![]+[])[+!+[]]                     18241
r     (!![]+[])[+!+[]]                    18241
d     ([][[]]+[])[!+[]+!+[]]              23405
N     (+[![]]+[])[+[]]                    23669
e     (!![]+[])[!+[]+!+[]+!+[]]           29217
i     ([![]]+[][[]])[+!+[]+[+[]]]         33581
l     (![]+[])[!+[]+!+[]]                 24209
s     (![]+[])[!+[]+!+[]+!+[]]            29217
uu    ([][[]]+[])[+[]]+([][[]]+[])[+[]]   36983

JSFuck으로 번역 한 JavaScript는 다음과 같습니다.

score = 0;
for (u = 1; u < input.length; ++u)
  score += (difference = input.charCodeAt(u) - input.charCodeAt(u-1)) * difference;
return '#JSFuck, ' + score;

JSFuck.com의 번역기를 자세히 살펴보고 평가 기능이 어떻게 작동하는지 알아 냈습니다. "Eval source"를 선택하면 코드가 자체 실행 JSFuck 함수가됩니다. 그러나 입력을 얻으려면 함수 내에서 인수 [0]에 액세스해야합니다. 이것은 최종 JS 코드를 가져옵니다 ...

t=arguments[0];n=0;for(u=1;u<t.length;++u)n+=(f=t.charCodeAt(u)-t.charCodeAt(u-1))*f;return'#JSFuck, '+n

(이전 버전의 점수가 왜 이보다 낮은 지 궁금하다면 JSFuck 프로그램이 JS로 평가되어야하는 문자열을 반환했기 때문입니다. 이것이 포스트에 남겨 두지 않은 이유이기도합니다)


당신 abs은 불필요합니다. 나는 그것이 단지 차이를 만들지도 모른다고 생각한다 ... :)
Sanchises

6
점수가 혼란 스러웠습니다. 공백을 제거해야합니다. 특히 프로그램의 출력이이어야하기 때문에 JSFuck, 102280181.
mbomb007

실제로 @sanchises, 나는 실제로 처음에 사각형 2를 넣는 것을 잊어 버렸기 때문에 Math.abs가있었습니다. 해결됩니다.
Domino

@ mbomb007 그렇다면, 역시 고칠 것입니다.
Domino

3

CJam, 23663 19389 11547

"#CJam,"32A;clYew[]ULC;;;;::- 0$.*:+

온라인으로 사용해보십시오

전략적으로 더 많은 캐릭터를 추가하여 거의 끝없이 추진할 수 있다고 생각하기 시작했습니다. 그러나 나는 여기서 수익이 감소하는 시점에 도달하기 시작했다고 생각합니다. 예를 들어, 내가있는 곳 ULC;;;에서는 전체 알파벳을 뒤로 사용하고 26을 사용할 수 ;있지만 이득은 점점 작아집니다.

내가 남긴 가장 큰 격차 는 초기 문자열에서 m와 사이에 ,있습니다. 나는 그것을 제거하기 위해 합리적인 것을 찾지 못했습니다. 나는 방법이 있다고 확신합니다. 그러나 한계를 넘어 서면 Dennis의 솔루션처럼 보일 수 있습니다 ...


3

자바, 33911

$0123456789ABCDEFGHIJKLMNOPQRS=>/**/('#')+('JAVASCRIPT,')+(" ")+(($)/**/=0,($0123456789ABCDEFGHIJKLMNOPQRS[`split`]``[`map`]/**/(($$,$$$)/**/=>/**/($)/**/=Math[`pow`]/**/($0123456789ABCDEFGHIJKLMNOPQRS[T=`charCodeAt`]/**/($$$)+-($0123456789ABCDEFGHIJKLMNOPQRS[T]/**/(($$$)/**/>=6-5?/**/($$$)+-1:0.)),2)+($))),($))

이것은 내가 코드 골프에서 해본 것 중 가장 어리석은 최적화 중 하나입니다 ...

"댓글 스팸"제안 = P를위한 Neil의 소품


/**/적절한 장소 에 삽입하면 5180을 절약 할 수 있다고 생각합니다 .

3

자바, 31520

이 솔루션은 다른 솔루션과는 엄청나게 다른 이었고 , 나는 그것이 자신의 대답이라고 생각합니다.

A=>/**/(($)/**/=/**/(''),('000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000100000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000100000000000000000000000000000000000000001000000000000000000000000000000000000000010000000000000000000000000000000000000000000100000000000000000000000000000000000000100000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000000000000000100000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010/-,+*)(')/**/[`split`]``[`reduce`]/**/(($$,$$$,$$$$)/**/=>/**/($$$)/**/>7.-07?/**/(($)+=/**/((/**/String[`fromCharCode`]/**/)(($$$$)+-($$))),($$$$))/**/:/**/($$)),/**/eval/**/($))

그것은 7306 문자이며, 대부분 0/1 문자열로 인코딩 된 실제 프로그램이며 나머지는 단순히 그것을 해독하기위한 것입니다. 필요한 각 문자 값을 얻기 위해 각 '1'의 색인에서 이전 '1'의 색인을 뺀 값을 가져옵니다. 그런 다음 결과 문자열을 실제 함수로 평가합니다.이 함수는 본질적으로 문제를 해결하기위한 표준 골프 프로그램입니다 (약 105 자 자체).


2

R, 68911 57183 53816 52224

STDIN에서 문자열을 가져 와서 raw를 통해 정수로 변환합니다. 결과 벡터를 차분, 제곱 및 합합니다. 결과는 문자열로 반환됩니다. 변수 이름 tip을위한 @nimi에게 감사합니다.

'&&'=sum;'&&&'=diff;'&&&&'=as.integer;'&&&&&'=charToRaw;'&&&&&&'=readline;'&&&&&&&'=paste;'&&&&&&&'('#R,','&&'((A='&&&'('&&&&'('&&&&&'('&&&&&&'()))))*A))

@nimi 감사합니다. 2 : 짧게 유지하려고 노력했습니다 :)
MickyT

2

매스 매 티카, 33552

A=ToExpression;A@ExportString[A@Characters@(**)"001000100010001101001101011000010111010001101000011001010110110101100001011101000110100101100011011000010010110000100000001000100011110000111110010101000110111101010011011101000111001001101001011011100110011101011011001000110010111000100011001001100100000001000100011010010110011001100110011001010111001001100101011011100110001101100101011100110100000001010100011011110100001101101000011000010111001001100001011000110111010001100101011100100100001101101111011001000110010101000000001000110101110100100110"(**),(**)"Bit"(**)]

이 코드는 명명되지 않은 함수로 평가되어 입력 문자열의 "노이즈"를 계산합니다. 바이너리 데이터의 ASCII 표현은 본질적으로 "노이즈리스"라는 사실을 이용합니다. 보이는 이진 데이터는 문자열입니다

"#Mathematica, "<>ToString[#.#&@Differences@ToCharacterCode@#]&

37848 점으로 자체적으로 유효한 답변이었을 것입니다.

그 밖의 모든 것

A=ToExpression;A@ExportString[A@Characters@(**)"001..110"(**),(**)"Bit"(**)]

이진 문자열을 해독하여 Mathematica 코드로 해석합니다. Mathematica의 빈 주석은 (**)매우 "노이즈"이며 실제로 "s 에서 노이즈를 제거합니다 .


2

자바 8 : 117170 100508 99062 98890

람다 식과 변수의 인라인 할당을 통해이 코드를 약간 단축 할 수 있습니다.

A->{int B=0,D=0,E=0;char[] C=A.toCharArray();for(;D<C.length-1;)B+=(E=C[D]-C[++D])*E;return"#java, "+B;}

A-> A9876543210; B-> $ 0123456; C-> A; D-> AA; E-> $ 0123456789
TheNumberOne

2

자바, 129300 128400 110930 106581 105101

B->{int A=0,C=A;char[]Z=B.toCharArray();for(;++C<Z.length;A=A+(Z[C]-Z[C-1])*(Z[C]-Z[C-1]));return\"#Java, \"+A;}

이 도전은 실제로 가장 짧은 솔루션을 찾는 것보다 문자를 사용하고 최적화하는 것에 대해 더 깊이 생각하게했습니다. 나는 숫자를 줄이기 위해 계속 노력할 것이다.

이것은 람다 함수이며 B함수를 나타내는 문자열입니다. "이것을 문자열로 전달할 때 따옴표 ( ) 를 이스케이프하는 것을 잊지 마십시오 .


2

피스, 16391

++C38828542027820dsm^-ChdCed2,Vztz

여기서 사용되는 유일한 트릭은 base-256 encoding #Pyth,이며, 문자열 자체보다 훨씬 저렴합니다.

++C38828542027820dsm^-ChdCed2,Vztz    Implicit: d=' ', z=input()
                             ,Vztz    Pair each char in the input with its neighbour
                   m                  Map d in the above to:
                      Chd               ASCII code of 1st char
                         Ced            ASCII code of 2nd char
                     -                  Difference between the two
                    ^       2           Squared
                  s                   Take the sum
  C38828542027820                     '#Pyth,'
++               d                    '#Pyth,' + ' ' + result, implicit print

2

M, 47033 52798

A9876543210(A9876543210) F AA9876543210=2:1:$L(A9876543210) S AAA9876543210=$A($E(A9876543210,AA9876543210-1))-$A($E(A9876543210,AA9876543210))**2+AAA9876543210
    Q "#M, "_AAA9876543210

이것을 사용하려면 다음과 같이 따옴표와 "이스케이프"공백 ​​문자 (MUMPS에서 중요 함)를 이스케이프해야합니다.

>$$A9876543210^MYROUTINE("A9876543210(A9876543210)"_$C(9)_"F AA9876543210=2:1:$L(A9876543210) S AAA9876543210=$A($E(A9876543210,AA9876543210-1))-$A($E(A9876543210,AA9876543210))**2+AAA9876543210"_$C(10,9)_"Q ""#M, ""_AAA9876543210")
#M, 47033

"M"은 "MUMPS"의 대체 이름입니다. 실무자들 사이에 어느 것이 올바른지에 대한 의견이 다릅니다. 당연히 여기에서 더 짧은 옵션을 선택했습니다.


AAAA를 초기화하지 않겠습니까?
SSH

또한 운영자 우선 순위가 없기 때문에 S AAA = $ A ($ E (A, AA-1))-$ A ($ E (A, AA)) ** 2 + AAA 만 가능합니다. 점수 ...
SSH

@SSH 함수를 호출하기 전에 깨끗한 기호 테이블을 가정하고 있습니다 (그래서 NEW물건을 넣을 필요는 없습니다 ). 따라서 AAAA(현재 AAA9876543210)에서 산술을 시작 하면 강제로 적용됩니다 0(아마도 Caché 구현 세부 사항일까요? 테스트 할 GT.M 설치가 없습니다). 운영자 우선 순위에 대한 호소; 나는 항상 순전히 왼쪽에서 오른쪽으로 작업하는 관점에서 생각하기가 어렵다는 것을 알게되었습니다. (또한 M에 지수 연산자가 있다는 것을 잊었습니다. CRUD 응용 프로그램을 작성할 때 자주 발생하는 것은 아닙니다.)
senshin

좋은! 또한 왼쪽에서 오른쪽으로 실행되기 때문에 ** 2 이전에 괄호가 필요하지 않습니다.
SSH

@SSH 감사합니다. 내가 실제로 측정 한 버전에는이 없으므로 점수는 여전히 동일합니다.
senshin

1

루비, 118402

puts "#Ruby, #{a=0;aa=nil;File.read(ARGV[0]).each_byte{|aaa| aa||=aaa;a+=(aaa-aa)**2;aa=aaa};a}"

같은 명령 줄을 통해 파일을 읽습니다 ruby diff.rb /path/to/file. 개선의 여지가 있으며, 그것은 내가 지금하고있는 일입니다.


1

C ++ 166345

void n(){int b=0,c,d;string a;cin >>a;for(c=1;c<a.length();++c){d=(a[c]-a[c-1]);b+=d*d;}cout<<"#C++, "<<b;}

1

펄, 93556

chomp($A=<>);$AAA=$AAAA=0;foreach$AAAAA(split'',$A){$AA=ord($AAAAA);$AAA+=($AAAA-$AA)**2 if($AAAA!=0);$AAAA=$AA}print'#Perl, '.$AAA

이걸 좀 더 줄이려고합니다.

그것은 중괄호 (밝혀 {}, ASCII 123 및 125) 및 밑줄 ( _, ASCII 95) 다른 모든 문자는 내가 포맷 된 이유 범위 30 ~ 70, 주위에 있기 때문에 매우 비싸다 if내가했던 방법을, 그리고 왜 $AAAAAPerl의 beloved 대신에 사용하고 있습니까 $_?

슬프게도, 기호가있는 모든 변수는 읽기 전용이므로 $#and과 같은 조합을 활용할 수 없습니다 $$.


1

F # 136718 130303

let(A)=Seq.map;
(stdout.Write(Seq.sum(A(fun(AA)->AA*AA)(A((<||)(-))(((Seq.pairwise(A(int)(stdin.ReadToEnd())))))))))

\n후 가있는 곳 ;.


1

POSIX 쉘, 172026

{ while IFS= read -N 1 A; do A1=$(printf %d \'"$A");test "$A1" -eq 0 && break;case $A11 in "")A111=0;;*)A111=$((A1-A11));;esac;A11="$A1";A1111=$((A111**2+A1111));done;echo "# POSIX Shell, $A1111";}

Pyth checker (178386)와 같은 결과를 얻을 수 없습니다.


1. "쉘"은 프로그래밍 언어가 아닙니다. 이것은 배쉬처럼 보입니다. 2. STDIN에서 간단히 읽을 수 있습니다. 소스 코드 자체를 읽을 필요가 없습니다.
Dennis

@Dennis 감사합니다, 저도 같은 결과를 얻을 수는 없지만, 아마 (내가 아닌 "압축"버전에서 같은 결과를 얻었다 일단 적어도) 아직 버그가 ... 거기 ... 편집
로이스 Mahdal

1

루아, 171078 117896

골프 :

A=string AA=A.sub AAA=io.read()AAAA=#AAA AAA=AAA..AA(AAA,AAAA,AAAA)AAAAA=0 AAAAAA=A.byte for AAAAAAA=1,AAAA do AAAAAAAA=AAAAAA(AA(AAA,AAAAAAA,AAAAAAA))-AAAAAA(AA(AAA,AAAAAAA+1,AAAAAAA+1))AAAAA=AAAAA+AAAAAAAA*AAAAAAAA end print(AAAAA)

언 골프 드 :

A=string 
AA=A.sub 
AAA=io.read()
AAAA=#AAA 
AAA=AAA..AA(AAA,AAAA,AAAA)
AAAAA=0 
AAAAAA=A.byte 
for AAAAAAA=1,AAAA do 
    AAAAAAAA=AAAAAA(AA(AAA,AAAAAAA,AAAAAAA))-AAAAAA(AA(AAA,AAAAAAA+1,AAAAAAA+1))
    AAAAA=AAAAA+AAAAAAAA*AAAAAAAA 
end 

print(AAAAA)


-3

C ++, 5

    #include <iostream>
    #include <string>
    #include <cmath>
    using namespace std;

    void convertToASCII(string letter)
    {
        int count = 0;
        int ans = 0;
        int *diff = new int[]; //dynamic array

        for(int i=0; i<letter.length(); i++)
        {
            char x = letter[i]; //letter.at(i);

            if(i!=0){
                diff[i-1] = int(x)- int(letter[i-1]);
                count++;
            }
        }

        for(int j=0; j<count; j++){
            ans += pow(diff[j], 2.0);
        }

        cout << "#C++, " << ans << endl;
    }

    int main()
    {
        string plainText;
        cout << "Enter text: ";
        getline(cin, plainText);
        convertToASCII(plainText);
        system ("pause");
        return 0;
    }

7
프로그래밍 퍼즐 및 코드 골프에 오신 것을 환영합니다! 이것은 정답이지만이 챌린지에 대한 점수는 프로그램의 텍스트가 프로그램을 통해 실행 된 결과 여야합니다. 또한 가능한 한 그 점수를 최소화하려고 노력해야합니다. 코드를 줄이고 점수를 낮추는 방법을 보려면 페이지 의 팁을 살펴보십시오 .
ETHproductions
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.