충돌 IRB (대화식 루비)


18

루비에는 REPL이 내장되어있어 매우 편리합니다.

IRB의 스크린 샷

당신의 도전은 최소한의 코드로 충돌하는 것입니다!

"충돌"의 정의는 " 의도하지 않은 방식으로 종료 "입니다. 이 수단 exit, quit, abort, irb_exit, irb_quit, 등. 알. 유효한 답변이 아닙니다.

또한 시스템의 다른 부분에 부작용을 일으키지 않을 수 있습니다. 예를 들어, `rm -rf /`유효하지 않습니다.

모든 버전 1.9.3 이상이 유효합니다. 코드가 특정 버전의 Ruby에서만 작동하는 경우 답변에 해당 코드를 지정할 수 있습니다.

마지막 제한은 보석에 의존 할 수 없다는 것입니다.

이것은 이므로 IRB와 충돌하는 가장 짧은 코드가 이길 것입니다!


골프 스크립트 anser, PLZ 할 수 있습니까?
Digital Trauma

3
와. 나는 루비를 모른다.이 답변을 읽은 후에는 결코 그것을 배울 수 없다.
izabera

" '충돌'의 정의는 '의도하지 않은 방식으로 빠져 나가도록하는 것'입니다."의도하지 않은 일을하기위한 코드를 어떻게 작성해야합니까? 나는 당신이 무엇을 요구하는지 분명하지 않기 위해 투표합니다.
msh210

답변:


6

5 자

ENV=0

( @daniero 의 답변에서 영감을 얻음 )


나를 위해 작동하지 않습니다 :irb(main):001:0> ENV=0 (irb):1: warning: already initialized constant ENV
브라이언 Minton

@BrianMinton 1.9.3p194 만 가지고 있으며 해당 버전과 "작동"합니다.
Howard

아, 내 버전은 아주 오래된 것입니다 :irb 0.9.6(09/06/30)
Brian Minton

1
irb의 최신 버전 인
@BrianMinton

17

16 자

String=0
String=0

가장 짧지는 않지만 두 번째 줄까지 충돌하지 않는 것이 재미 있다고 생각합니다. IRB가 ​​종료되기 전에 약 20 줄의 텍스트를 생성합니다. 어떤 이유로 든 예를 들어 단축 할 수 없습니다 2.times{String=0}.


편집하다

지금까지의 모든 답변 중 이것이 나에게 도움이 된 유일한 사람 (그리고 손에 넣을 수있는 모든 버전에서 작동)이며 다음 버전에서 모두 테스트했습니다.

ssh대학에 진학 할 때 어떤 종류의 리눅스에서든 :
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
ruby 1.8.5 (2006-08-25) [x86_64-linux]
Mac OS X Mavericks 기본값 :
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]
OS X에서 Homebrew를 통해 설치 :
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

편집 2

7 자

내 첫 번째 버전 (및 / 또는 최대 상호 참조를위한 @ Howard 의 답변)을 @ chinese perl goth 의 답변과 결합 :

STDIN=0

Array=0즉시 충돌합니다.
primo

1
@primo cool, 그러나 나는 그것을 작동시킬 수 없다 : / (내 편집보기)
daniero

여기에서도 이것과 닫는 stdin 답변 작업 만, 나머지는 모두 경고 만합니다.
user12205

예, stdin 하나도 저에게 효과적입니다. 내 편집 후 게시되었습니다.
daniero

1
두 번째 줄을 줄이면 =여전히 충돌합니다.
Fraxtil

10

12 자

루비는 정확히 내 차 한잔은 아니지만, 나는 stdin을 닫을 때 irb가 재미있게 행동한다는 것을 알았습니다. :)

$stdin.close

irb 0.9.6 (09/06/30) 및 Ruby 1.9.3p194에서 테스트되었습니다.


5
STDIN.close작동하며 1 적은 문자입니다!
Kavu

+1 당신이 그것을 볼 때 문제가 발생할 것이 분명하기 때문에 +1 :) 내 대답은 아마도 더 많은 버그 일 것입니다. 스타 트렉이나 슈퍼 지능형 로봇에게 불가능한 질문을 할 때와 비슷하며 폭발합니다.
daniero

관련 : $>.close.
Jordan

7

10 9 자

@daniero의 대답에 대한 짧은 변형 :

String=1
-

이것은 최소한 기본 OS X Mavericks Ruby (2.0.0)에서 작동합니다.

대답은 기본적으로 Ruby Token함수가 case입력 토큰에서 수행 한다는 사실에 의존합니다 . 사례 중 하나가에 대해 확인 String되었으며 첫 번째 줄로 재정의되었습니다. 이 경우는 실패하므로 기본값으로 넘어 가며, 개체에 ancestors접근자가없는 것으로 가정합니다 .

"bug"는 토크 나이저에 있기 때문에 구문 분석이 완료된 후에 만 ​​행이 적용되므로 첫 번째 행은 실패하지 않습니다. 따라서 후속 라인에만 영향을 미칩니다. 후속 행에는 실패를 확인하기 위해 일종의 연산자가 포함되어야합니다.


+1 설명을 위해. 하지만이 Daneiro는 누구입니까? ;)
daniero

@daniero : 사과드립니다. 오늘 lysdexic 인 것 같습니다.
nneonneo

6

5 자

$>=$<

stdout을 stdin으로 설정하면 쓰기를 위해 stdin을 열려는 중에 오류가 발생하고 irb가 충돌합니다.


이것은 루비 2.3.0p0에서 테스트되었습니다
photoionized

5

22 자

def method_missing;end

분명히 그것은 일부 irb 내부와 엉망입니다. (이 문제를 해결하려면 추가 self.def.)


4

12 자

def send;end

내가 아는 한 Object 클래스에는 다음과 같은 동작을 보여주는 네 가지 메소드가 있습니다.

send
method_missing
respond_to?
respond_to_missing?

4
내 IRB에서 그것은 단순히 반환 nil하고 계속합니다
daniero

@daniero 1.8.6 및 1.9.3이 모두 충돌합니다.
primo

@primo가 더 이상 2.0.0에서 충돌하지 않습니다
drusepth

4

5 자

IRB=0

IRB를 재정의하는 것만 큼 IRB를 방해하는 것은 없습니다.


네! 이것은 충돌하지 않지만 아무것도 후에 20 줄 오류를 인쇄합니다!
Mega Man

아마도 다른 버전의 IRB 인 @MegaMan은 아마도 YMMV 일 것입니다.
vgoff

어쨌든 둘 다 멋지다!
Mega Man



0

26 + 1 = 27 자

이것은 골프가 아니지만 우연히 발견하고 다른 사람들이 그것을 즐길 수 있다고 생각했습니다.

class Fixnum;def +;end end

위의 내용을 입력 한 후 Enter 키를 두 번 눌러야하기 때문에 점수에 +1을 추가했습니다 (하지만 다른 사람이 Enter를 계산하지 않았으므로 +2는 아님).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.