이 질문 에서 영감을 얻은 오늘 목표는 brainfuck로 URL을 인코딩하는 것입니다.
브라우저가 해킹당했습니다! 위치 표시 줄이 두뇌 해석기로 바뀌 었습니다. URL을 brainfuck 프로그램으로 바꾸는 프로그램이 필요합니다. 내 컴퓨터도 매우 느리므로 brainfuck 프로그램이 작을수록 좋습니다.
오, 나는 하나의 작업 탭 만 열어 두었습니다. 내 트위터. 그래서 당신은 트윗으로 만 프로그램을 보낼 수 있습니다.
-
문자열을 입력으로 받아 brainfuck 프로그램을 출력하는 모든 언어로 트윗 (140 자)에 맞는 프로그램을 작성하십시오.
-
이 brainfuck 프로그램은 입력없이 실행되며 출력을 생성합니다.
-
이 출력은 Chrome의 위치 표시 줄에 삽입되어 실행됩니다.
-
Chrome의 동작이 # 1의 입력 문자열을 입력하여 얻는 동작과 동일하면 솔루션이 유효합니다. URL 단축기로 리디렉션은 다른 동작으로 간주됩니다. 최소한 동일한 도메인에 머물러 있어야합니다.
brainfuck 인터프리터가 각 셀에 무한정의 부호있는 정수와 무제한의 셀을 가지고 있다고 가정 할 수 있습니다.
점수는 다음 URL 세트를 인코딩하기 위해 생성 된 brainfuck 프로그램 길이의 합계에 의해 결정됩니다.
https://www.google.com/
/codegolf/47895/
http://www.golfscript.com/golfscript/examples.html
http://en.wikipedia.org/wiki/Percent-encoding
ftp://ftp.freebsd.org/pub/FreeBSD/
https://github.com/isaacg1/pyth/blob/master/doc.txt#L92
http://ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README
가장 작은 점수가 이깁니다.
답변
Pyth-118 바이트, 점수 : 154 + 567 + 597 + 620 + 530 + 875 + 1092 = 6630 6623 4653 4435
이제 계수 곱셈 알고리즘을 사용하십시오!
위의 알고리즘보다 약간 나아지 긴하지만 매우 간단한 알고리즘입니다. Pyth를 사용할 계획이지만 현재 알고리즘으로 Python은 <140 bytes 입니다.
=zecz"//"=z?>z4}"www."zz=z?Pzqez\/zFNzKCNJ/^K.5 1=d\+pk+holN[?*-KZd>KZ*-ZK\-+\>*dK+++++\>*Jd"[>"*Jd"<-]>"*-K*JJd)\.=ZK
아웃 그것은 첫째 스트립 http://
사용하여 split("//")
과 www.
와 /
끝. 그런 다음 min 함수를 사용하여 고려되는 세 가지 옵션 중 가장 좋은 옵션을 확인합니다.
- 사용
+
또는-
원하는 셀 값을 현재 셀의 값을 업데이트하는 - 새로운 세포로 가서 그냥 채우십시오
+
의 - 정사각형은 상수 영역의 최소 둘레가 있으므로 sqrt (n) * sqrt (n) + remainder를 수행하여 새 셀로 이동하고 곱셈을 사용하여 업데이트하십시오. http://cydathria.com/bf/bf_ex3.html
나는 항상 .
각 문자를 출력합니다.
새로운 코드에 대한 자세한 설명은 곧 제공 될 예정입니다. 나는 골프, 특히 탈피 www.
와/
끝 부분 쳤지 만 한계가 20 바이트이기 때문에 귀찮게 할 수 없습니다.
이것은 놀랍게도 작동 ftp://
이 크롬과 크롬이 자동으로 만들어 이후의 URL ftp.freebsd.org/pub/FreeBSD/
에ftp://ftp.freebsd.org/pub/FreeBSD/
다음으로 사전을 사용하여 셀 값을 저장하고 문자가 이미 셀에 만들어 졌는지 확인합니다.
Brainfuck 검색 주소창 확장
맞습니다! @BrainSteel의 의견을 본 후에 나는 그것을 만들어야한다는 것을 알았습니다. 이것은 당신이 할 경우에만 전체 검색 주소창를 인수하지 않는다 bf, tab. 또한 검색 주소창 API가 이상하기 때문에 검색 주소창에 코드를 전달할 수 없으므로 직접 처리해야합니다. 그래서 나는 내 자신을http://
검사를 한 다음 탭의 URL을 설정합니다.
웹 스토어에 확장을 설치하는 데 필요한 5 달러를 지불하고 싶지 않다면 수동으로 설치해야합니다. : 그냥 여기에서 우편 다운로드 https://drive.google.com/file/d/0B0qkKIzGc0QiNzBzVUJjZkRIZ0k/view?usp=sharing , 크롬의 확장 페이지로 이동, 압축 해제를 오른쪽 상단에 DEV 모드 옵션 상자를 클릭하고, 압축이 풀린 확장 장치를 넣습니다.
당신이 즐기시기 바랍니다!
답변
C, 140 134 132 138 128 139 바이트
263 + 816 + 911 + 955 + 827 + 1355 + 1779 = 7269 6906 바이트
업데이트 : nutki 덕분에 6 바이트가 적습니다!
128 바이트를 다시 업데이트하십시오. 코드를 읽기 어렵습니다. 이제의 URL도 제거하려고합니다 ftp://
.
세 번째는 139 바이트로 업데이트하십시오. 코드는 좀 더 읽기 쉬우 며 불쾌한 정의되지 않은 동작을 제거했습니다. 이제 사이트 이름 앞에가 www.
있으면 제거됩니다. 나는 7k 미만 이었지만 Pyth와 함께 Maltysen에 인정해야한다고 생각합니다. 잘 했어.
#define p putchar
a;main(int c,char**V){while(*V[1]++-47);*++V+=1;for(*V+=**V-'w'?0:4;c=**V;*V+=1,p(46))for(;c-a;a+=c>a?1:-1)p(c>a?43:45);}
조금 풀었다 :
#define p putchar
a;
main(int c,char**V){
while(*V[1]++-47);
*++V+=1;
for(*V+=**V-'w'?0:4;c=**V;*V+=1,p(46))
for(;c-a;a+=c>a?1:-1)
p(c>a?43:45);
}
이 코드는 명령 줄에서 URL을 소요하고 변환을 BF으로 만 사용 .
, -
및 +
. 코드의 문자열을 제거하려는 시도를한다 ftp://
, http://
, https://
, 및 www.
BF로 변환하기 전에. 다음은 출력 결과 목록입니다.
google.com/
codegolf.stackexchange.com/questions/47895/
golfscript.com/golfscript/examples.html
en.wikipedia.org/wiki/Percent-encoding
ftp.freebsd.org/pub/FreeBSD/
github.com/isaacg1/pyth/blob/master/doc.txt#L92
ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README
답변
Brainfuck, 77 바이트, 점수 = 31647
점수는 codepoint+4
모든 캐릭터 의 합입니다 .
+++++[>+++++++++<-]>+[>++>+>++>+>+<<<<<-]>+>->->>--->,[[<.>-]<<.<.<.<.>>>>>,]
EOF = 0 인 BF 구현을 사용합니다.
예:
input:
!bar
output:
+++++++++++++++++++++++++++++++++.[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.[-]
답변
자바 스크립트 (ES6)-137 바이트, 점수-7413
., +및 만 사용합니다 -. Firefox 콘솔에서 테스트 할 수 있습니다.
B=s=>[...s.replace(/^h.+\/\//,'')].map((c,i,a)=>(v=i?c[C]()-a[i-1][C]():c[C='charCodeAt']())?'-+'[v>0|0].repeat(v>0?v:-v):'').join('.')+'.'
이것은 내 점수 카운터입니다.
[
'https://www.google.com/',
'http://codegolf.stackexchange.com/questions/47895/',
'http://www.golfscript.com/golfscript/examples.html',
'http://en.wikipedia.org/wiki/Percent-encoding',
'ftp://ftp.freebsd.org/pub/FreeBSD/',
'https://github.com/isaacg1/pyth/blob/master/doc.txt#L92',
'http://ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README'
].map(B).join('').length