귀하의 프로그램 :
두 가지 프로그램을 작성합니다 (둘 다 동일한 언어로). 스토리지 프로그램은 STDIN에서 문자열을 가져와 영속적 인 위치 (아래 참조)에 저장 한 다음 오류없이 종료합니다. 검색 프로그램은 입력을받지 않고 저장된 문자열을 검색하여 STDOUT에 인쇄합니다.
지속성에 대한 객관적인 테스트 :
로컬 머신에서 스토리지 프로그램을 실행 한 다음 로컬 머신의 전원을 껐다 켜고 로컬 머신에서 검색 프로그램을 호출 할 수 있어야합니다. 이 재부팅 테스트를 통과하는 한 웹 에서조차도 원하는 문자열을 숨길 수 있습니다.
테스트 사례 :
저장 후 검색 :
echo foo | Store
Retrieve
foo
반복 된 상점은 (set () 메소드와 같이) 겹쳐 써야합니다.
echo foo | Store
echo bar | Store
Retrieve
bar
반복 검색은 비파괴 적입니다 (get () 메소드처럼).
echo foo | Store
Retrieve
foo
Retrieve
foo
스토리지를 호출하기 전에 검색 :
당신은 이것에 대해 걱정할 필요가 없습니다. 검색 프로그램은 스토리지 프로그램이 과거 어느 시점에서 실행되었다고 가정 할 수 있습니다.
입력 / 출력 유연성.
사람들은 엄격한 STDIN / STDOUT에서 표준 IO 규칙으로 이것을 확장하도록 요청했습니다. 허점이 너무 많기 때문에 나는 할 수 없습니다. 일부 표준 IO 옵션에는 이미 입력이 지속적으로 저장되어 있습니다 (예 : “프로그램이 파일에서 입력을받을 수 있음”). 엄격한 STDIN 및 STDOUT보다 유연하지만 플러드 게이트를 열지 않고 싶습니다.
표준 IO 규칙 스레드에서 나는 도전을 깨뜨리지 않는 것을 선택합니다.
-
원하는 경우 프로그램에서 GUI 프롬프트 와 명령 줄 프롬프트 를 통해 입력을 받을 수 있습니다.
-
프로그램이 화면에 표시되어 출력 될 수 있습니다. 여기에는 GUI 대화 상자가 포함됩니다
-
프로그램이 STDERR로 출력 될 수 있지만 여전히 실제로 오류를 발생시킬 수는 없습니다.
대체를 사용하는 경우 사용자 대화식이어야합니다. 사용자는 입력을 프로그램에 파이핑하거나 프로그램이 제공하는 프롬프트에 입력하거나 입력을 프로그램의 명령 줄 인수로 입력하는 것 외에 다른 작업을 수행 할 필요가 없습니다. 화면에 출력이 표시되거나 STDOUT 또는 STDERR로 전송되는 것을보기 위해 검색 프로그램을 실행하는 것 이외의 작업을 수행하지 않아도됩니다.
허용되는 가정 :
- 두 프로그램은 같은 디렉토리에서 실행됩니다
- 프로그램에 해당 디렉토리에 대한 읽기-쓰기 권한이 있습니다
- 생성 한 파일은 재부팅 후에도 유지됩니다 (temp dir 아님)
- 문자열의 일부가 아닌 하나의 후행 줄 바꿈이 허용됩니다. 다른 후행 공백이 없습니다.
이것은 코드 골프이며, 점수는 두 프로그램의 바이트 합계입니다.
답변
zsh, 4 바이트
Store : >f
(STDIN에서 읽고이라는 파일에 씁니다 f
)
Retrieve : <f
(의 내용 f
을 STDOUT에 씁니다 )
답변
TI-BASIC (Z80), 1 바이트 ?
상점 : (문자열 만 입력)
검색 : Ans
(바이트 27)
그러나 이것이 유효하지 않은 경우 :
TI-BASIC (Z80), 7 6 바이트
Jakob에게 -1 감사합니다.
상점 : Prompt Str0
(bytes DD AA 09)
검색 : disp Str0
(bytes ED AA 09)
답변
브라우저 JS, 44 바이트
저장 :
localStorage.a=prompt()
검색 :
alert(localStorage.a)
답변
POSIX 쉘 sh / bash / … 8 바이트
저장:
dd>f
가져 오기:
dd<f
답변
파이썬 3 , 46 바이트
저장, 45 바이트 :
open(*'fw').write('print(%r)'%open(0).read())
검색 프로그램은 이름이라는 파일 인 store 명령으로 빌드됩니다 f
. ( 파일 이름은 1 바이트 )
답변
배치, 16 바이트
COPY CON A
TYPE A
답변
Powershell-4 바이트
저장:
ac
(대안도 sc
)
검색
gc
편집 : 방금 출력에 사용자 입력이 허용되지 않는 것을 알았습니다 … 그래서 4에서 6 또는 8 바이트로 이동합니다.
저장:
ac f
sc f
8 바이트 버전의 경우 (대체 )
ac
f
6 바이트 버전의 경우 경로로 지정하십시오.
검색
gc f