나는 수동적 공격적이며 그를 찾지 않고 상사를 모욕하고 싶습니다


93

직장에서 약 몇 개월이 지났고 상사 얼굴에 비명을 지르고 싶다고 생각합니다. 그러나 나는 문제가있는 사람들과 직접 대면하는 사람이 아닙니다. 또한 직업을 잃고 싶지 않습니다.

그래서 여기에 아이디어가 있습니다. 나는 그를 알지 못하고 그를 모욕 할 수 있기를 원합니다. 그리고 나는 완벽한 방법을 깨달았습니다. 완벽하게 훌륭한 메시지 안에 모욕을 인코딩하는 일종의 소프트웨어가 필요합니다. 그리고 그가 나무의 숲을 보지 못하는 것으로 알려진 방법으로 보면, 나는 단지 방법을 알고 있다고 생각합니다.

알 수없는 길이의 문자열을 입력으로 사용하지만 줄 바꿈은 포함하지 않는 프로그램을 작성하십시오. 이것은 내가 보내려는 원시 메시지입니다.

가능하면 "DIE IN A GREASE FIRE"메시지가 왼쪽 열 전체를 구성하도록 형식화 된 문자열을 리턴하십시오. 단어 사이에 공백이 있어야하는 새로운 단락. 지금, 나는 매우 화를 내면서 모든 글자가 대문자로되어 있어야합니다.

다른 방식으로 문자열을 수정할 수 없습니다. 즉, 모든 문자열을 대문자로 바꿀 수 없습니다.

해당 문자열을 이런 식으로 포맷 할 수 없으면 원래 문자열을 반환해야합니다. 표준 입력에서 입력을 읽습니다.

일반적인 규칙 적용 : HTTP 요청 없음, THGTTG의 컨설팅 Marvin 등 없음

입력 예 :

상사 님, 어떻게 지내세요? 지난 금요일에 그 사고에 대한 모든 비난을 받았다는 것이 주목을 받았습니다. 그것의 대다수 만이 아닙니다. 그것의 모든 마지막 비트. 나머지 팀원들이 적어도 부분적으로 책임이 있다고 생각하는 것이 잘못입니까? 결국, 우리 여섯 명 모두가 시작에 관여했습니다. 내가 비난없이 서 있어야한다고 생각하지는 않습니다. 전혀. 내가 말하는 것은 이것입니다 : 최선을 다합니다. 열심히 노력합니다. 나는 끊임없이 향상합니다. 그리고 나는 끊임없이 책임을지고 있습니다. 일반적으로 말하면, 나는 내 행동에 대한 모든 책임을지는 것으로 매우 괜찮습니다. 그러나 이번 봄 이후, 내가받을 수있는 것보다 더 많은 것을 얻는 것 같습니다. Flakenhauser 계약을 기억하십니까? 모든 것이 기대했던대로 순조롭게 진행되었습니다. 또는 처음에 보였다. 마지막 순간에 상황이 무너졌습니다. 모든 팀은 부주의 한 계획이나 잘못 관리되는 자원보다 괴물 사고와 더 유사하다는 데 동의했습니다. 여전히, 나는 혼자서 그것을 비난했다. 그때 아무 말도하지 않았지만 그 비난에 대한 나의 관용 수준은 심각한 움푹 패였다. 그 시점부터 저는 조사를 피하기 위해 항상 두 배나 열심히 노력해야한다고 생각했습니다. 그리고 여전히, 우리는 다시 여기에 있습니다. 나의 모든 업적에도 불구하고. 요즘 우리가 항상 끝나는 것 같습니다. 모든 단일 프로젝트. 참기 어려워지고 있습니다. 조사를 피하기 위해서 그리고 여전히, 우리는 다시 여기에 있습니다. 나의 모든 업적에도 불구하고. 요즘 우리가 항상 끝나는 것 같습니다. 모든 단일 프로젝트. 참기 어려워지고 있습니다. 조사를 피하기 위해서 그리고 여전히, 우리는 다시 여기에 있습니다. 나의 모든 업적에도 불구하고. 요즘 우리가 항상 끝나는 것 같습니다. 모든 단일 프로젝트. 참기 어려워지고 있습니다.

출력 예 :

상사 님, 어떻게 지내세요?
지난 금요일에 그 사고에 대한 모든 비난을 받았다는 것이 주목을 받았습니다. 그것의 대다수 만이 아닙니다.
그것의 모든 마지막 비트.

나머지 팀원들이 적어도 부분적으로 책임이 있다고 생각하는 것이 잘못입니까? 결국, 우리 모두 여섯 명이 참여했습니다.
내가 비난없이 서 있어야한다고 생각하지는 않습니다. 전혀.

내가 말하는 것은 이것입니다 : 최선을 다합니다. 열심히 노력합니다. 나는 끊임없이 향상합니다. 그리고 나는 끊임없이 책임을지고 있습니다.

일반적으로 말하면, 나는 내 행동에 대한 모든 책임을지는 것으로 매우 괜찮습니다. 그러나 이번 봄 이후, 내가받을 수있는 것보다 더 많은 것을 얻는 것 같습니다.
Flakenhauser 계약을 기억하십시오.
모든 것이 기대했던대로 순조롭게 진행되었습니다. 또는 처음에 보였다. 마지막 순간에 상황이 무너졌습니다.
모든 팀은 부주의 한 계획이나 잘못 관리되는 자원보다 괴물 사고와 더 유사하다는 데 동의했습니다.
여전히, 나는 혼자서 그것을 비난했다.
그때 아무 말도하지 않았지만 그 비난에 대한 나의 관용 수준은 심각한 움푹 패였다.

그 시점부터 저는 조사를 피하기 위해 항상 두 배나 열심히 노력해야한다고 생각했습니다. 그리고 여전히, 우리는 다시 여기에 있습니다.
나의 모든 업적에도 불구하고.
요즘 우리가 항상 끝나는 것 같습니다.
모든 단일 프로젝트. 참기 어려워지고 있습니다.

이것은 코드 골프입니다. 가장 짧은 코드가 승리합니다.


4
줄 바꿈은 문장 끝 구두점 이후에만 발생해야합니까? 또는 다음 글자가 대문자 인 한, 현재 또는 약어 내에서 줄 바꿈을 할 수 있습니까? 즉, 과거에 모욕 관련 문제는 여기에서 잘 이루어지지 않았지만 새로운 외설에 대한 참가자의 창의성을 요구하지 않았기 때문에 도망 갈 수 있습니다.
Martin Ender 2018 년

1
적절한 명사 앞의 줄 바꿈은 완벽합니다.
Christofer Ohlsson 2018 년

3
@NateKerkhofs 나는 거꾸로 생각합니다. 비밀 메시지는 전체 메시지에서 단지 몇 문자이므로 모욕은 나무이고 메시지는 숲이라고 생각합니다. 우리는 보스가 나무가 아닌 숲을 볼 수 있기를 정말로 희망합니다.
Joshua Taylor

11
이 되었습니까 아놀드 슈워제네거의 편지는 영감?
200_success

57
나는 Hot Questions 목록에서 이것을 보았을 때 약간의 이중 테이크를했다는 것을 인정해야한다. 나는 그것이 직장이 아닌 PCG라는 것을 보았을 때 ... 음 ... 나는 조금 실망하지 않았다고 말하지 않을 것입니다.
BenM

답변:


54

CJam, 56 53 바이트

q_"DIEIINAAGGREASEFFIRE"{S@:A+S@+#:BA<AB>}%(!B)*\N*@?

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

작동 원리

q_                     Read all input from STDIN and push a copy.
"DIEIINAAGGREASEFFIRE" Push the characters we're searching for in form of a
                       string. We'll try to prepend a linefeed to all of them.
                       Some characters are duplicated to prepend two linefeeds.
{                      For every character C in that string:
  S@                   Push ' ' and rotate the string on the stack on top of it.
  :A                   Save the string (initially the input) in A.
  +                    Prepend the space to A.
  S@+                  Construct the string " C".
  #                    Compute the index of " C" in the modified A.
  :B                   Save the index in the variable B.
  A<                   Push the substring of A up to the index.
  AB>                  Push the substring of A after the index.
}%
(                      Shift the first element of the resulting array.
!                      Compute the logical NOT. This pushes 1 if and only if the
                       array's first element is an empty string, which is true
                       if and only if the input string started with a D.
B)                     Push the last value of B and increment. If the last match
                       was successful and, therefore, all matches were successful,
                       B != -1, so B + 1 != 0.
*                      Compute the product of the two topmost items on the stack.
\                      Swap the resulting Booleanr with the array of substrings.
N*                     Join the array, separating by linefeeds.
@                      Rotate the input string on top of the stack.
?                      Select the joined array if the Boolean is 1 and the input
                       string otherwise.

14
왜 그렇게 많은 답변을지지합니까? 네, 그들이 미쳤 기 때문에.
primo

모든 대문자에 VERY ANGRY 단어가 포함 된 입력은 어떻게합니까?
Adam Davis

2
@AdamDavis : "C"및 "A"에 공백을 추가하면 줄 바꿈으로 WORD가 끊어지지 않습니다.
Dennis

25

펄-60 바이트

#!perl -p
$_=(join$/,$_=~('DIE\IN\A\GREASE\FIRE'=~s/./($&.*)/gr))||$_

shebang을 하나로 계산합니다.

이 솔루션은 가장 안쪽 문자열을 사용하여 다음 정규식을 작성합니다.

(D.*)(I.*)(E.*)(\.*)(I.*)(N.*)(\.*)(A.*)(\.*)(G.*)(R.*)(E.*)(A.*)(S.*)(E.*)(\.*)(F.*)(I.*)(R.*)(E.*)

이것은 m.buettner의 솔루션에 사용되는 정규식과 유사합니다 . 그런 다음 생성 된 정규식이 입력과 일치합니다. 리스트 문맥에서, 이것은 각각의 일치 그룹을 포함하는 배열을 반환하는데, 이것은 개행으로 합쳐집니다 ( 'match nothing'groups의 이유 (\.*)는 추가 개행을 삽입하기위한 것입니다). 일치하는 것이 없으면 원래 문자열이 대신 출력됩니다.


펄-73 바이트

#!perl -pl
$s=$_}for(map$s!~s/.*?(?=$_)//?$\='':$&,'DIEI.NA.G.REASEF.IRE$'=~/./g){

shebang을 2로 계산합니다.

이렇게하면 문자열이 적절한 구분 기호로 분할되고 배열에서 조각을 수집합니다. 둘 중 하나라도 일치하지 않으면 출력 레코드 구분 기호 ( -l옵션 을 사용하여 개행 문자로 설정 됨 )가 설정되지 않으므로 문자열이 수정되지 않은 상태로 출력됩니다.


shebang은 절대 경로가 필요하지 않습니까?
celtschk 2016 년

왜 점 (DIEI.NA. ...?
edc65

@celtschk 아마도 시스템에 따라, 그리고 스크립트를 어떻게 호출 할 것인지에 따라 다릅니다. 로 호출 된 ./script.pl다음 가능할 가능성이 높습니다. 로 호출 된 경우 perl script.plno입니다.
primo 2016 년

1
@ edc65 .after I는 추가 줄 바꾸기를 앞에 삽입합니다 I(같은 위치에서 다시 일치 하기 때문에). 아마도 약간 반 직관적 일 것입니다.
primo 2016 년

2
@celtschk shebang의 스위치는 여전히 해석됩니다. 당신은 추가하여 테스트 할 수 있습니다 -M치명적인 오류로 죽을 것 오두막에 옵션 : Too late for "-M" option at line 1.하지만 거기에 넣어 주된 이유는, 내가 너무 그것을로 실행해야 함을 설명 할 필요 피하기 perl -pl script.pl- 현재의 형태로는 실행 그대로.
primo

12

GolfScript, 53 바이트

데니스와 비슷해 보 였는데 비슷한 것들을 병렬로 생각해 냈습니다.하지만 여기 내 시도가 있습니다.

각 코드 블록 앞에있는 링크를 클릭하여 온라인으로 시도하십시오. 불행히도 온라인 인터프리터는 1024자를 초과하는 코드를 실행할 수 없으므로 테스트 입력의 "압축"을 수행해야했습니다. 그러나 여전히 작동합니다.

찌그러진 버전

..(\;68=(>"IEIINAAGGREASEFFIRE"{1$.@?:^<n@^>}/](]^0<=

찌르지 않은 댓글 버전

.       # (Save input)
.(\;    # Get first character
68=(>   # If 'D', work with input; else, work with one-character string
"IEIINAAGGREASEFFIRE"
{       # For each character
 1$.@   # (Duplicate message twice)
 ?:^    # Find first index of character
 <n     # Extract part before index and add a newline
 @^>    # Extract part including and after index as new "message"
}/      # (Close loop)
](]^0<= # If last line was successfully matched, select result; else, select input

Dennis가 제기 한 포인트 : 모든 GolfScript 프로그램은 자동 최종 줄 바꿈을 인쇄합니다. 이것이 내 솔루션을 그대로 무효화할지 여부는 확실하지 않습니다. 마지막 줄을 추가하여 최종 줄 바꿈을 억제하려면 4 문자가 필요하다고 생각합니다 "":n.


1
캐릭터가 단어의 첫 번째 문자인지 확인하지 않는 것 같습니다. 예를 들어. "FIFA"는 "I"또는 "A"가 아닌 F에만 사용해야합니다.
Dennis

@Dennis 사양이 필요한 부분은 보지 못했습니다. 그러나 자신에 대한 제한을 부과 한 경우 솔루션에서 제한을 해제하면 뛰어난 골프 성을 굳힐 것 같습니다.
Runer112

1
이것이 m.buettner와 나는 그 질문을 해석 한 방법입니다 (다른 답변을 자세히 살펴 봐야 할 것입니다). 그렇습니다.
Dennis

7

루비-140

a="DIEINAGREASEFIRE";n=[4,6,7,13];i=0;o='';s=ARGV[0]
s.chars.each{|c|
if c==a[i]
i+=1;o+="\n";o+="\n"if n-[i]!=n
end
o<<c
}
puts((i<16)?s:o)

이것에 정규 표현식이 없습니다. . 동시에 ARGV [0] 입력의 문자와 왼쪽 열 메시지를 만들기 위해 분리해야하는 문자가 포함 된 문자열을 걷습니다. 원래 줄 바꿈이 필요한 문자 다음에 공백이 붙어 있었지만 줄 바꿈을 삽입하는 색인을 하드 코딩하는 것이 약간 짧았습니다.

모든 내용을 말하고 완료 한 후에는 i색인이 끊어 져야하는 모든 문자를 통과하기에 충분한 시간이 증가 했는지 확인합니다 . 그렇지 않은 경우 원래 문자열 만 인쇄합니다. 있는 경우 서식을 지정합니다.

n-[i]!=n현재 색인이 (와 비교하여 n.include? i) 추가 줄 바꿈이 필요한지 여부를 확인할 때 문자를 저장하는 깔끔한 트릭이었습니다 . 또한 여러 줄 블록에도 불구하고 {}s를 사용하여 일부 문자 do/end를 저장했으며 최종 풋에 삼항 조건을 사용하여 출력 할 문자를 결정할 때 문자를 저장했습니다.

가장 짧지는 않지만 정규 표현식이 없으면 깔끔하다고 생각했습니다.


7

펄, 184 바이트

Perl의 화려한 점수는 아니지만 간단한 정규식 솔루션입니다.

$_=<>;s/^(D.*) (I.*) (E.*) (I.*) (N.*) (A.*) (G.*) (R.*) (E.*) (A.*) (S.*) (E.*) (F.*) (I.*) (R.*) E/$1\n$2\n$3\n\n$4\n$5\n\n$6\n\n$7\n$8\n$9\n$10\n$11\n$12\n\n$13\n$14\n$15\nE/;print;

3
코드로 정규식을 작성하고 톤을 저장할 수 있습니까?
피터 테일러

@PeterTaylor는 확실하지만 지금 당장 할 시간이나 펄 지식이 없습니다. 오늘 나중에 볼 수도 있습니다.
Martin Ender 2018 년

그럼에도 불구하고 그것은 내 PERL 답변을 능가합니다.이 게시물을 게시하지 않아도됩니다 : p
Tal

4 개의 문자를 저장하십시오 : print($_)== print. 가독성 +1 포인트 : 다른 솔루션의 경우가 아닌 상황을 확인하기가 매우 쉽습니다.
Ole Tange

이것은 Perl에서 단순 하다고 간주 됩니까?
링컨 Bergeson

6

자바 스크립트 116

M-Buettner 아이디어의 자바 스크립트 구현

console.log((RegExp('^('+[...'DIE IN A GREASE FIRE$'].join('.*)(')+')').exec(z=prompt())||[,z]).slice(1).join('\n'))

테스트 스 니펫

z="Dear Boss, how are things? It has come to my attention that I received all the blame for the mishap last Friday. Not just the majority of it. Every last bit of it. Is it wrong for me to think that the rest of the team were at least in part responsible? After all, all six of us were involved from the get-go. Not that I think I should stand without blame. Not at all. All I'm saying is this: I do my best. I try hard. I improve constantly. And I am constantly taking responsibility. Generally speaking, I am very okay with taking full responsibility for my actions. But after this spring, it seems I get more than I deserve. Remember the Flakenhauser contract? Everything went down just about as smooth as one could have hoped. Or so it seemed at first. It was just at the very last minute that things fell apart. All of the team agreed that it was more akin to a freak accident than sloppy planning or mismanaged resources. Still, I - alone - took blame for it. Even though I said nothing then, my tolerance level for taking the blame took a serious dent then. From that point on, I have felt it necessary to always try twice as hard, just to escape scrutiny. And still, here we are again. In spite of all my accomplishments. Right where we always seem to end up these days. Every single project. It's becoming unbearable.";

T1.textContent = (RegExp('^('+[...'DIE IN A GREASE FIRE$'].join('.*)(')+')').exec(z)|| [,z]).slice(1).join('\n')

z='From that FIFA point on'
T2.textContent = (RegExp('^('+[...'DIE IN A GREASE FIRE$'].join('.*)(')+')').exec(z)|| [,z]).slice(1).join('\n')
pre { border: 1px solid black }
T1<pre id=T1></pre>
T2 (the FIFA test)<pre id=T2></pre>



FIFA테스트 에서 실패 (OP 의견)
Mwr247

@ Mwr247 이해하기 어렵다 : 어떤 FIFA 테스트를 시도 했습니까?
edc65

다음 편집으로 테스트 문자열을 시도하십시오 From that FIFA point on. FA앞에와 공백 앞에 새 줄을 넣습니다 FI.
Mwr247

@ Mwr247 나를 위해 아닙니다. 파이어 폭스에서 테스트 한 결과, 똑같은 줄이
나오고

4

Python3 ( 166 138)

골프 :

s='';o=input()
for n in o.split():s+=[n,'\n'+n.title()][n[0]==("DIEINAGREASEFIRE"*len(o))[s.count('\n')]]+' '
print([o,s][s.count('\n')==16])

언 골프 드 :

format_s = ''
unformat_s = input()
for n in unformat_s.split():
    format_s += [n, '\n' + n.title()][n[0] == ("DIEINAGREASEFIRE"*len(unformat_s))[format_s.count('\n')]] + ' '
print([unformat_s, format_s][format_s.count('\n') == 16])

람다를 사용하면 다소 기뻐하지만 사용 된 변수의 수와 다소 지저분한 개발은 반대 효과를냅니다. 정규식도 좋은 생각 일 수 있습니다. 헤이 호, 적어도 작동합니다 :).

편집 : 람다 변수를 count내장 및 단축 분할 문으로 대체했습니다 .


1

파이썬 3 (165)

def c(m,h,l=[]):
 if h:s=m.rindex(h[0]);l=[m[s:]]+l;return c(m[:s],h[1:],l)
 return[m]+l
i=input()
try:print('\n'.join(c(i,"ERIF ESAERG A NI EID")))
except:print(i)

언 골프

def headings_remaining(headings): return len(headings) > 0
def head(s): return s[0]
def tail(s): return s[1:]
def prepend(l,e): l.insert(0, e)
def reverse(s): return s[::-1]

def chunk(message,headings,output_list=[]):
    if headings_remaining(headings):
        split_index = message.rindex(head(headings))
        message_init = message[:split_index]
        message_last = message[split_index:]

        prepend(output_list, message_last)
        return chunk(message_init, tail(headings), output_list)
    else:
        prepend(output_list, message)
        return output_list

input_message=input()
try:
    headings=reverse("DIE IN A GREASE FIRE")
    print('\n'.join(chunk(input_message,headings)))
except ValueError: # Couldn't keep splitting chunks because didn't find heading
    print(input_message)

설명

chunk 마지막 제목을 포함하는 메시지 끝을 재귀 적으로 분할하여 목록 앞에 추가합니다.

주의 사항 : 어떤 이유로 편지에 제안 된 두 제목 사이에 공백이 없으면 작동하지 않지만 상사에게 보내는 편지에는 없을 것 같습니다.


1

루비 115

n,a,c,i=[4,6,7,13],gets,'',0;a.chars{|x|x=='DIEINAGREASEFIRE'[i]?(i+=1;c+="\n"if n-[i]!=n;c+="\n#{x}"):c+=x};puts c

루비 95

a,c,i=gets,"",0;a.chars{|x|x=="DIEINAGREASEFIRE"[i]?(i+=1;c+="\n#{x}"):(c+=x)};puts c

1

J - 110 103 바이트

J에는 문자열을 처리하는 데 유용한 함수가 없지만 배열 함수 만있는 이유는 무엇입니까? 똑똑한 것을 알아 내면 이것을 수정하겠습니다.

편집 : 단축 및 고정 출력 (이전에 추가 공간이 있었음) 및 확인. 나는 또한 설명을 개선했다.

f=:[:>,&.>/@('IEIINAAGGREASEFFIRE'&t=:(}.@[t{.@[(}:@],(((0{I.@E.)({.;LF;}.)])>@{:))])`]@.(0=#@[))@< ::]

설명:

함수 사용법을로 표시합니다 ( [<left argument>] <function name> <right argument>예 :) f <text>. 함수가 상당히 길기 때문에 모든 세부 사항을 설명하지는 않습니다.

@ 예를 들어 오른쪽 기능을 왼쪽 기능에 적용합니다. f@g x == f(g(x))

t=:(}.@[t{.@[(}:@],(((0{I.@E.)({.;LF;}.)])>@{:))])']@.(0=#@[)<delimiters> t <boxed string>문자열을 모든 구분 기호로 순서대로 분할 하는 재귀 함수 입니다. 분리 문자를 찾지 못하면 실패합니다.

(((0{I.@E.)({.;LF;}.)])>@{:) 구분 기호의 왼쪽에서 문자열을 나누고 그 사이에 줄 바꿈을 추가합니다.

>@{: 목록에서 마지막 문자열을 가져옵니다 (아직 분할되지 않은 문자열)

0{I.@E. 구분 기호가 없으면 실패하여 인덱스를 분할합니다.

{.;LF;}. 분할의 왼쪽, 줄 바꿈 및 분할의 오른쪽을 연결합니다

}:@], 이전 스플릿의 결과와 마지막 함수의 결과를 연결합니다 (마지막 의미 : 조회).

']@.(0=#@[)구분자가 남아 있는지 확인하고 위에 설명 된 함수 (5 줄)를 호출합니다. 그렇지 않으면 반환합니다.

'IEIINAAGGREASEFFIRE'&왼쪽 인수 t를 해당 문자열로 설정합니다.

[:>,&.>/@ 분할 결과에 합류

::] 무언가가 실패하면 (분열 인덱스 검색을 약점으로 만들었습니다) 원래 문자열을 반환하십시오.

예 (너무 길다) :

   f 'Dear Boss, how are things? It has come to my attention that I received all the blame for the mishap last Friday. Not just the majority of it. Every last bit of it. Is it wrong for me to think that the rest of the team were at least in part responsible? After all, all six of us were involved from the get-go. Not that I think I should stand without blame. Not at all. All I''m saying is this: I do my best. I try hard. I improve constantly. And I am constantly taking responsibility. Generally speaking, I am very okay with taking full responsibility for my actions. But after this spring, it seems I get more than I deserve. Remember the Flakenhauser contract? Everything went down just about as smooth as one could have hoped. Or so it seemed at first. It was just at the very last minute that things fell apart. All of the team agreed that it was more akin to a freak accident than sloppy planning or mismanaged resources. Still, I - alone - took blame for it. Even though I said nothing then, my tolerance lev...
Dear Boss, how are things? 
It has come to my attention that I received all the blame for the mishap last Friday. Not just the majority of it. 
Every last bit of it. 

Is it wrong for me to think that the rest of the team were at least in part responsible? After all, all six of us were involved from the get-go. 
Not that I think I should stand without blame. Not at all. 

All I'm saying is this: I do my best. I try hard. I improve constantly. And I am constantly taking responsibility. 

Generally speaking, I am very okay with taking full responsibility for my actions. But after this spring, it seems I get more than I deserve. 
Remember the Flakenhauser contract? 
Everything went down just about as smooth as one could have hoped. Or so it seemed at first. It was just at the very last minute that things fell apart. 
All of the team agreed that it was more akin to a freak accident than sloppy planning or mismanaged resources. 
Still, I - alone - took blame for it. 
Even though I said nothing then, my tolerance level for taking the blame took a serious dent then. 

From that point on, 
I have felt it necessary to always try twice as hard, just to escape scrutiny. And still, here we are again. In spite of all my accomplishments. 
Right where we always seem to end up these days. 
Every single project. It's becoming unbearable.
   f 'Die in a grease fire. It''s fun. Every time.'
Die in a grease fire. It's fun. Every time.
   f 'hai'
hai

1

자바 스크립트 (ES6), (93) 115 바이트

alert(prompt(x=[...'DIEI1NA1G1REASEF1IRE',i=0]).replace(/\b./g,a=>i<20&&a.match(x[i])?(+x[++i]?i++&&`

`:`
`)+a:a))

나는 공백을 따라 가거나 문자열을 시작한 문자 만 찾기 replace위해 일치하는 문자열을 단계별로 사용 /\b./g했습니다. 그런 다음 각 문자를 확인하여 찾고있는 배열의 현재 색인과 일치하는지 확인하고 그 전에 줄 바꿈을 추가하고 증가시킵니다 i.

편집 : 단어 사이에 줄 바꿈을 만들 필요가 없습니다. 나는 지금 그것을 했으므로 115까지 가져옵니다.


1

PHP, 328 바이트

"메시지"에 원시 텍스트를 포함하는 'G'라는 파일이 주어짐

<?php
$a=implode(file("G"));$b=str_split('DIEINAGREASEFIRE');foreach(array_unique($b) as $c){foreach(str_split($a) as $h=>$d){if($c==$d)$l[$c][]=$h;}}$e=-1;$n=$a;foreach($b as $f=>$c){foreach($l as $j=>$m){if($c==$j){foreach($m as $k=>$h){if($h>$e){$n=substr($n,0,$h)."\n".$c.substr($a,$h+1);$e=$h+2;break 2;}}}}}echo nl2br($n);

설명 (~ ungolfed && 코멘트 코드) :

<?php
$string=implode(file("G"));          // raw text to deal with
$msg=str_split('DIEINAGREASEFIRE');  // hidden message (make it an array)

 // 2D array : [letters of the message][corresponding positions in txt]
foreach(array_unique($msg) as $letter) {
    foreach (str_split($string) as $pos=>$let) {
        if ($letter==$let) $l[$letter][]=$pos; //1 array per seeked letter with its positions in the string
    }
}

$currentPos=-1;
$newString=$string;
foreach ($msg as $key=>$letter) { // deal with each letter of the desired message to pass
    foreach($l as $cap=>$arrPos) {// search in letters list with their positions
        if($letter==$cap) {       // array of the current parsed letter of the message
            foreach($arrPos as $kk=>$pos) { // see every position
                if ($pos>$currentPos) {     // ok, use the letter at that position
                    $newString=substr($newString,0,$pos)."\n".$letter.substr($string,$pos+1); // add line break
                    $currentPos=$pos+2; // take new characters into account (\n)
                    break 2;            // parse next letter of the message
                }
            }
        }
    }
}                    /* (note that I could have added some other (random) line breaks management, so that
                      * the message is not TOO obvious... !*/
echo nl2br($newString);

1

PHP, 136 바이트

for($f=" ".join(file(F));$c=DIEINAGREASEFIRE[$i++];){while(($p=strpos($f,$c,$p))&&$f[$p-1]>" ");$p?$f[$p-1]="\n":$i=20;}echo$i<20?$f:"";

전체 모욕을 넣을 수 있다면; 선행 공백 또는 줄 바꿈으로 수정 된 문자열을 인쇄합니다. 그렇지 않으면 빈 출력. 로 실행하십시오 -r.

고장

for($f=" ".join(file(F));       // read input from file "F"
    $c=DIEINAGREASEFIRE[$i++];) // loop through insult characters:
{
    while(($p=strpos($f,$c,$p))     // find next position of $c
        &&$f[$p-1]>" ");            // ... preceded by a space
    $p?$f[$p-1]="\n"                // if found, replace the space with a newline
    :$i=20;                         // else break the loop
}
echo$i<20?$f                // if modified text has the full insult, print it
    :"";                    // else print nothing

0

파이썬-190 바이트

l,r="IExINxAxGREASExFIRE","\n";k=p=raw_input();y=i=0
for c in l:
    if c!="x":
        h=len(p);x=p[y:h].find(c)
        if x==-1:i+=1
        p=p[0:x+y-1]+r+p[x+y:h];y=x+y;r="\n"
    else:r=r+r
if i!=0:p=k

언 골프

이것은 나의 첫 번째 골프 시도입니다.) 좋은 코딩 기술을 배우려고 노력했지만, 나는 find를 사용하고 적절한 문자를 찾고 출력 형식을 지정하기 위해 문자열 스 플라이 싱을 사용하는 데 중점을 두었습니다.

변수 -

lr = l에는 새로운 형식의 단락을 만드는 데 가이드로 사용할 문자가 할당됩니다. r에는 새로운 출력 간격을위한 줄 바꾸기 문자가 할당됩니다.

k, p = 입력 단락. K는 스크립트 실행 중에 재 할당되지 않기 때문에 원본으로 되 돌리는 데 사용됩니다. 간격을 위해 새 줄을 두 번 추가 할 때 x를 확인합니다.

y, i = y는 일종의 "커서"이며, 캐릭터가 마지막으로 찾은 위치를 추적하므로 접합 목적을 위해 단락을 올바르게 찾게됩니다. 단락 (p 변수)을 k 변수를 통한 원래 입력으로 되돌립니다.

h = 접속에 사용하는 입력 길이.

x = C로 표시되는 현재 문자의 위치이며 접속에도 사용됩니다.

c = 반복하여 검색 할 l의 문자

다음 코드는 원래 코드에서 쉽게 읽을 수 있도록 변경되었습니다.

letters,return="IExINxAxGREASExFIRE","\n"
input1=input2=raw_input()
lastpos=sanity=0

for char in letters:
    if char != "x":
        inputlength=len(input1)
        charposition=input1[lastpos:inputlength].find(char)
        if charposition==-1:
            sanity+=1
        input1=input1[0:position+lastpos-1]+return+input1[position+lastpos:inputlength]
        lastpos=position+lastpos
        return="\n"
    else:return=return+return
if sanity!=0:
    input1=input2

의견을 보내 주셔서 감사합니다. 배우려고합니다.


나는 약간의 트릭으로 편집을 제안했습니다. 설명이 필요한지 물어보세요. 골프는 더 많이 할 수 있지만, 나는 당신에게 맡길 것입니다. :)
seequ

@TheRare 감사합니다! 내 "if x ==-1 : i + = 1"줄과 달리 편집에서 제공 한 "i = + x <0"줄을 정말 좋아합니다. 내가 올바르게 읽고 있는지 확인하기 위해, 이것은 지난 밤에 내가 읽었던 삼항 것 중 하나입니까? "x가 0보다 작은 경우 (-1은 문자를 찾을 수 없을 때 반환 됨) : x를 i에 추가"로 읽습니다. 맞습니까? 따라서 여전히 값에 대해 -1 이하로 위생 검사를 충족시킵니다. 내가 올바르게 읽고 있는지 확인하고 싶습니다. 그것이 큰 공간 절약 요소입니다!
0xhughes 2018 년

실제로는에 추가 x<0됩니다 i. 사실 파이썬에서 1과 동일하며 거짓 x는 -1한다면, 그것은 하나를 추가 0과 동일하며, 그렇지 않으면 0이 i+=와 동일i=i+
seequ

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