이 질문 에서 영감을 얻은 오늘 목표는 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