Tôi thụ động, hung hăng và muốn xúc phạm sếp mà không bị anh ta phát hiện.


93

Đó là một vài tháng khó khăn trong công việc và tôi cảm thấy như tôi chỉ muốn hét thẳng vào mặt sếp của tôi. Tuy nhiên, tôi không phải là người trực tiếp đối đầu với những người mà tôi gặp vấn đề. Tôi cũng không muốn mất việc.

Vì vậy, đây là một ý tưởng: Tôi muốn có thể xúc phạm anh ta, mà không bao giờ anh ta phát hiện ra. Và tôi nhận ra một cách hoàn hảo: tôi cần một số loại phần mềm mã hóa một sự xúc phạm bên trong một thông điệp hoàn toàn tốt. Và nhìn thấy cách anh ta biết không nhìn thấy rừng cây, tôi nghĩ tôi biết cách:

Viết cho tôi một chương trình lấy đầu vào là một chuỗi có độ dài không xác định, nhưng không chứa ngắt dòng. Đây sẽ là tin nhắn thô tôi muốn gửi.

Nếu có thể, hãy trả về chuỗi được định dạng sao cho thông báo "DIE IN A GREASE FIRE" tạo thành toàn bộ cột bên trái. Với các đoạn mới mà khoảng cách ở giữa các từ nên đi. Bây giờ, như tôi rất tức giận, điều quan trọng không kém là mọi chữ cái đều được viết hoa.

Bạn không thể sửa đổi chuỗi theo bất kỳ cách nào khác, tức là bạn không thể biến tất cả chuỗi thành ký tự chữ hoa.

Nếu chuỗi trong câu hỏi không thể được định dạng theo cách này, bạn phải trả về chuỗi gốc. Đọc đầu vào từ đầu vào tiêu chuẩn.

Áp dụng quy tắc thông thường: Không yêu cầu HTTP, không tư vấn Marvin từ THGTTG, v.v.

Ví dụ đầu vào:

Thưa ông chủ, mọi việc thế nào? Tôi đã nhận thấy rằng tôi đã nhận được tất cả sự đổ lỗi cho sự rủi ro vào thứ Sáu tuần trước. Không chỉ phần lớn của nó. Mỗi chút cuối cùng của nó. Có sai không khi tôi nghĩ rằng phần còn lại của đội ít nhất là một phần chịu trách nhiệm? Rốt cuộc, tất cả sáu người chúng tôi đều tham gia. Không phải tôi nghĩ rằng tôi nên đứng mà không đổ lỗi. Không có gì. Tất cả những gì tôi nói là thế này: tôi làm hết sức mình. Tôi cố gắng hết sức. Tôi cải tiến liên tục. Và tôi liên tục nhận trách nhiệm. Nói chung, tôi rất ổn với việc chịu trách nhiệm hoàn toàn cho hành động của mình. Nhưng sau mùa xuân này, dường như tôi nhận được nhiều hơn những gì tôi xứng đáng. Ghi nhớ hợp đồng Flakenhauser? Mọi thứ đã đi xuống suôn sẻ như người ta có thể hy vọng. Hoặc có vẻ như lúc đầu. Chỉ đến phút cuối cùng, mọi thứ sụp đổ. Tất cả các đội đều đồng ý rằng nó giống với một tai nạn kỳ quặc hơn là lập kế hoạch cẩu thả hoặc tài nguyên bị quản lý sai. Tuy nhiên, tôi - một mình - đã đổ lỗi cho nó. Mặc dù tôi không nói gì sau đó, mức độ chịu đựng của tôi đối với việc đổ lỗi đã khiến một vết lõm nghiêm trọng sau đó. Từ thời điểm đó, tôi đã cảm thấy cần phải luôn cố gắng gấp đôi, chỉ để thoát khỏi sự giám sát. Và vẫn vậy, chúng ta lại ở đây. Bất chấp tất cả những thành tựu của tôi. Ngay tại nơi chúng ta dường như luôn kết thúc những ngày này. Mỗi dự án. Nó trở nên không thể chịu đựng được. Chỉ để thoát khỏi sự giám sát. Và vẫn vậy, chúng ta lại ở đây. Bất chấp tất cả những thành tựu của tôi. Ngay tại nơi chúng ta dường như luôn kết thúc những ngày này. Mỗi dự án. Nó trở nên không thể chịu đựng được. Chỉ để thoát khỏi sự giám sát. Và vẫn vậy, chúng ta lại ở đây. Bất chấp tất cả những thành tựu của tôi. Ngay tại nơi chúng ta dường như luôn kết thúc những ngày này. Mỗi dự án. Nó trở nên không thể chịu đựng được.

Ví dụ đầu ra:

Thưa ông chủ, mọi việc thế nào?
Tôi đã nhận thấy rằng tôi đã nhận được tất cả sự đổ lỗi cho sự rủi ro vào thứ Sáu tuần trước. Không chỉ phần lớn của nó.
Mỗi chút cuối cùng của nó.

Có sai không khi tôi nghĩ rằng phần còn lại của đội ít nhất là một phần chịu trách nhiệm? Rốt cuộc, tất cả sáu người chúng tôi đều tham gia.
Không phải tôi nghĩ rằng tôi nên đứng mà không đổ lỗi. Không có gì.

Tất cả những gì tôi nói là thế này: tôi làm hết sức mình. Tôi cố gắng hết sức. Tôi cải tiến liên tục. Và tôi liên tục nhận trách nhiệm.

Nói chung, tôi rất ổn với việc chịu trách nhiệm hoàn toàn cho hành động của mình. Nhưng sau mùa xuân này, dường như tôi nhận được nhiều hơn những gì tôi xứng đáng.
Hãy nhớ hợp đồng Flakenhauser.
Mọi thứ đã đi xuống suôn sẻ như người ta có thể hy vọng. Hoặc có vẻ như lúc đầu. Chỉ đến phút cuối cùng, mọi thứ sụp đổ.
Tất cả các đội đều đồng ý rằng nó giống với một tai nạn kỳ quặc hơn là lập kế hoạch cẩu thả hoặc tài nguyên bị quản lý sai.
Tuy nhiên, tôi - một mình - đã đổ lỗi cho nó.
Mặc dù tôi không nói gì sau đó, mức độ chịu đựng của tôi đối với việc đổ lỗi đã khiến một vết lõm nghiêm trọng sau đó.

Từ thời điểm đó, tôi đã cảm thấy cần phải luôn cố gắng gấp đôi, chỉ để thoát khỏi sự giám sát. Và vẫn vậy, chúng ta lại ở đây.
Bất chấp tất cả những thành tựu của tôi.
Ngay tại nơi chúng ta dường như luôn kết thúc những ngày này.
Mỗi dự án. Nó trở nên không thể chịu đựng được.

Đây là mã golf. Mã ngắn nhất sẽ thắng.


4
Do ngắt dòng chỉ xảy ra sau khi chấm câu kết thúc? Hoặc tôi có thể ngắt dòng, trước một số thích hợp bây giờ hoặc thậm chí có thể viết tắt, miễn là chữ cái sau là chữ hoa? Điều đó đã được nói, những thách thức liên quan đến xúc phạm đã không thành công ở đây trong quá khứ, nhưng bạn có thể thoát khỏi, bởi vì bạn đã không yêu cầu sự sáng tạo của người tham gia trong việc đưa ra những lời tục tĩu mới.
Martin Ender

1
Dòng ngắt trước danh từ thích hợp là hoàn toàn tốt.
Christofer Ohlsson

3
@NateKerkhofs Tôi nghĩ nó ngược: vì tin nhắn bí mật chỉ là một vài ký tự trong toàn bộ tin nhắn, tôi nghĩ rằng sự xúc phạm là những cái cây và tin nhắn là khu rừng. Chúng tôi thực sự hy vọng rằng ông chủ nhìn thấy khu rừng chứ không phải những cái cây.
Joshua Taylor

11
thư của Arnold Schwarzenegger là nguồn cảm hứng của bạn?
200_success

57
Tôi phải thừa nhận tôi đã thực hiện một chút thao tác khi tôi thấy điều này trong danh sách Câu hỏi nóng. Khi tôi thấy đó là PCG chứ không phải Nơi làm việc ... à ... Tôi sẽ không nói rằng tôi không có một chút thất vọng.
BenM

Câu trả lời:


54

CJam, 56 53 byte

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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
Tại sao tôi thấy mình nâng cao rất nhiều câu trả lời của bạn? Ồ vâng, bởi vì họ điên.
Primo

Nó làm gì để nhập có chứa các từ RẤT NHIỀU trong TẤT CẢ CAPS?
Adam Davis

2
@AdamDavis: Chuẩn bị không gian cho các trò chơi và một trò chơi chắc chắn rằng WORDS sẽ không bị phá vỡ bởi các nguồn cấp dữ liệu.
Dennis

25

Perl - 60 byte

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

Đếm số shebang là một.

Giải pháp này sử dụng chuỗi trong cùng để xây dựng biểu thức chính sau:

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

tương tự như regex được sử dụng trong giải pháp của m.buettner . Regex được tạo sau đó được khớp với đầu vào. Trong ngữ cảnh danh sách, điều này sẽ trả về một mảng chứa từng nhóm đối sánh, được nối với nhau bởi một dòng mới (lý do cho các nhóm 'không khớp gì' (\.*), là để chèn một dòng mới bổ sung). Nếu không có kết quả khớp, chuỗi gốc là đầu ra thay thế.


Perl - 73 byte

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

Đếm số shebang là hai.

Điều này phân tách chuỗi tại các dấu phân cách thích hợp và thu thập các phần trong một mảng. Nếu bất kỳ trong số chúng không khớp, dấu tách bản ghi đầu ra (được đặt thành dòng mới với -ltùy chọn) sẽ không được đặt và do đó, chuỗi là đầu ra không được sửa đổi.


Không phải shebang cần một con đường tuyệt đối?
celtschk

tại sao các dấu chấm (DIEI.NA. ...?
edc65

@celtschk Có thể, tùy thuộc vào hệ thống của bạn và cách bạn dự định gọi tập lệnh. Được gọi là ./script.pl, sau đó rất có thể là có. Nếu được gọi là perl script.pl, thì không.
primo

1
@ edc65 .Sau Isẽ chèn một dòng mới bổ sung trước I (vì nó khớp lại ở cùng một vị trí). Có lẽ một chút phản trực giác.
primo

2
@celtschk Các công tắc trên shebang vẫn sẽ được diễn giải. Bạn có thể kiểm tra điều này bằng cách thêm -Mtùy chọn vào shebang, lỗi này sẽ xảy ra với lỗi nghiêm trọng: Too late for "-M" option at line 1.Nhưng lý do chính khiến tôi đặt nó ở đó, tôi cũng tránh cần phải giải thích rằng nó cần được chạy như perl -pl script.pl- ở dạng hiện tại, nó chạy như là
primo

12

GolfScript, 53 byte

Có vẻ như Dennis và tôi đã nghĩ ra những điều khá giống nhau song song ... Nhưng đây là nỗ lực của tôi.

Nhấp vào liên kết trước mỗi khối mã để thử trực tuyến. Thật không may, trình thông dịch trực tuyến sẽ không cho phép bạn chạy mã lớn hơn 1024 ký tự, vì vậy tôi đã phải thực hiện một số ... "nén" đầu vào kiểm tra. Nhưng nó vẫn hoạt động.

Phiên bản squished

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

Chưa hoàn thành, nhận xét phiên bản

.       # (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

Một điểm được nêu ra bởi Dennis: Tất cả các chương trình GolfScript đều in một dòng mới cuối cùng tự động. Cho dù điều này có làm mất hiệu lực giải pháp của tôi hay không, tôi không chắc chắn. Tôi tin rằng sẽ tốn 4 ký tự để chặn dòng mới cuối cùng bằng cách thêm vào "":nđâu đó gần cuối.


1
Bạn dường như không kiểm tra xem ký tự có phải là ký tự đầu tiên của từ không. Ví dụ. "FIFA" chỉ nên được sử dụng cho F, không phải cho "I" hoặc "A".
Dennis

@Dennis Tôi không thấy bất kỳ phần nào của đặc tả yêu cầu điều đó. Nhưng nếu bạn áp đặt hạn chế đó lên chính mình, việc nâng nó khỏi giải pháp của bạn có vẻ như nó sẽ củng cố tính năng chơi gôn vượt trội của nó.
Runer112

1
Đây là cách m.buettner và tôi diễn giải câu hỏi (tôi phải xem xét kỹ hơn các câu trả lời khác), nhưng bạn nói đúng, nó không nói bất cứ nơi nào mà chúng ta không thể ngắt lời.
Dennis

7

Hồng ngọc - 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)

Không có regexes trong cái này . Nó đồng thời chuyển các ký tự trong đầu vào ARGV [0] và một chuỗi chứa các ký tự mà chúng ta cần ngắt để tạo thông báo cột bên trái. Ban đầu sẽ gắn các khoảng trắng sau các chữ cái cần có một dòng mới, nhưng thấy rằng nó ngắn hơn một chút để mã hóa các chỉ mục để chèn ngắt dòng.

Khi tất cả được nói và thực hiện, nó kiểm tra xem ichỉ số đã tăng đủ số lần để vượt qua mọi chữ cái cần phá. Nếu không, chúng ta chỉ cần in chuỗi gốc. Nếu có, chúng tôi cung cấp cho họ định dạng.

n-[i]!=nlà một mẹo gọn gàng để lưu các ký tự khi kiểm tra xem chỉ mục hiện tại có phải là chỉ số cần ngắt dòng bổ sung hay không (so với n.include? i). Đồng thời lưu một số ký tự bằng cách sử dụng {}s thay vì do/endmặc dù là một khối đa dòng và đã sử dụng một điều kiện tạm thời trên các vị trí cuối cùng để lưu các ký tự khi xác định cái nào sẽ xuất ra.

Không phải là ngắn nhất, nhưng tôi nghĩ rằng nó sẽ gọn gàng để làm mà không có biểu thức thông thường.


7

Perl, 184 byte

Không phải là một điểm số ngoạn mục cho Perl, nhưng đây là một giải pháp regex đơn giản

$_=<>;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
Chắc chắn là có thể xây dựng regex trong mã và tiết kiệm một tấn?
Peter Taylor

@PeterTaylor chắc chắn, nhưng tôi không có thời gian cũng như kiến ​​thức Perl để làm điều đó ngay bây giờ. Tôi có thể có một cái nhìn sau ngày hôm nay.
Martin Ender

Mặc dù vậy, nó đánh bại câu trả lời PERL của tôi, điều mà tôi sẽ không đăng ngay bây giờ: p
Tal

Lưu 4 ký tự: print($_)== print. +1 điểm cho khả năng đọc: Thật dễ dàng để thấy những gì đang diễn ra mà không chính xác là trường hợp cho các giải pháp khác.
Ole Tange

Điều này được coi là đơn giản trong Perl?
Lincoln Bergeson

6

JavaScript 116

Triển khai Javascript ý tưởng của m-buettner

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

Kiểm tra đoạ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>



Điều này không thành công trong FIFAbài kiểm tra (bình luận của OP)
Mwr247

@ Mwr247 khó hiểu: bạn đã thử kiểm tra FIFA nào?
edc65

Hãy thử chuỗi thử nghiệm với chỉnh sửa sau : From that FIFA point on. Nó đặt một dòng mới trước FAvà trước không gian trước FI.
Mwr247

@ Mwr247 không dành cho tôi. Đã thử nghiệm với Firefox, tôi nhận được cùng một dòng chính xác, không có dòng mới nào trong đó
edc65

4

Python3 ( 166 138)

Chơi gôn

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])

Ungolfed-ish:

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])

Mặc dù việc sử dụng lambda làm tôi hài lòng phần nào, nhưng số lượng lớn các biến được sử dụng và sự phát triển hơi lộn xộn có tác dụng ngược lại. Regex có thể cũng là một ý tưởng tốt. Hay ho, ít nhất là nó hoạt động :).

Chỉnh sửa: thay thế biến lambda bằng countnội dung và rút gọn câu lệnh phân tách.


1

Python3 (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)

Bị đánh cắp

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)

Giải trình

chunk đệ quy tách ra cuối tin nhắn có chứa tiêu đề cuối cùng và đưa nó vào danh sách.

Hãy cẩn thận: điều này sẽ không hoạt động nếu không có khoảng trống nào giữa hai tiêu đề được đề xuất trong thư của bạn vì một số lý do, nhưng điều đó dường như không thể xảy ra trong một lá thư gửi cho sếp của bạn.


1

Ruby 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

Hồng ngọ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 byte

Tại sao J không có chức năng tốt để xử lý chuỗi, mà chỉ có chức năng mảng? Tôi sẽ sửa lại điều này nếu tôi tìm ra thứ gì đó thông minh.

Chỉnh sửa: Đầu ra được rút ngắn và cố định (trước đây có thêm khoảng trắng) và kiểm tra. Tôi cũng cải thiện lời giải thích.

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

Giải trình:

Tôi sẽ biểu thị việc sử dụng chức năng như [<left argument>] <function name> <right argument>, ví dụ f <text>. Tôi cũng sẽ không giải thích mọi chi tiết vì chức năng này khá dài.

@ áp dụng hàm phải cho hàm trái, vd. f@g x == f(g(x))

t=:(}.@[t{.@[(}:@],(((0{I.@E.)({.;LF;}.)])>@{:))])']@.(0=#@[)là một hàm đệ quy <delimiters> t <boxed string>phân tách chuỗi với mọi dấu phân cách, theo thứ tự. Thất bại nếu không tìm thấy một số dấu phân cách.

(((0{I.@E.)({.;LF;}.)])>@{:) tách chuỗi từ phía bên trái của dấu phân cách, thêm một nguồn cấp dữ liệu giữa chúng.

>@{: lấy chuỗi cuối cùng từ danh sách (chuỗi chưa được phân tách)

0{I.@E. khiến chỉ số bị chia tách, thất bại nếu dấu phân cách không tồn tại.

{.;LF;}. nối bên trái của phần tách, linefeed và bên phải của phần tách

}:@], nối các kết quả của các phân tách trước đó và kết quả của hàm cuối cùng (nghĩa cuối cùng: tra cứu)

']@.(0=#@[)kiểm tra nếu có bất kỳ dấu phân cách nào còn lại và gọi hàm được mô tả ở trên (5 dòng) nếu có. Nếu không thì trả lại.

'IEIINAAGGREASEFFIRE'&đặt đối số bên trái của tchuỗi đó

[:>,&.>/@ tham gia kết quả chia tách

::] nếu có lỗi xảy ra (tôi đã thực hiện tìm kiếm chỉ mục phân tách thành điểm yếu), hãy trả về chuỗi gốc.

Ví dụ (quá dài?):

   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

JavaScript (ES6), 93 115 byte

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

`:`
`)+a:a))

Tôi đã replacetừng bước qua chuỗi, với một kết quả trùng khớp /\b./gđể chỉ tìm các ký tự theo dấu cách hoặc bắt đầu chuỗi. Sau đó, tôi đã kiểm tra từng ký tự để xem liệu nó có khớp với chỉ mục hiện tại trong mảng mà tôi đang tìm kiếm không, và thêm một dòng mới trước nó nếu nó làm và tăng lên i.

EDIT: Bỏ lỡ sự cần thiết phải tạo dòng mới giữa các từ. Tôi đã làm điều đó bây giờ, nó mang đến 115.


1

PHP, 328 byte

Cho một tệp có tên 'G' chứa văn bản thô thành "enmessage"

<?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);

Giải thích (~ ungolfed && mã nhận xét):

<?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 byte

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:"";

nếu toàn bộ sự xúc phạm có thể được đưa vào; in chuỗi đã sửa đổi với dấu cách hàng đầu hoặc ngắt dòng; đầu ra trống nếu không. Chạy với -r.

phá vỡ

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

Python - 190 byte

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

Bị đánh cắp

Đây là nỗ lực chơi gôn đầu tiên của tôi :) Tìm cách học một số kỹ thuật mã hóa tuyệt vời, bất kể, tôi chỉ tập trung vào việc sử dụng find và sau đó một số chuỗi nối để tìm các ký tự phù hợp và định dạng đầu ra.

Biến -

lr = l được gán các ký tự, chúng tôi sẽ sử dụng làm hướng dẫn để tạo đoạn được định dạng mới. r được gán ký tự dòng mới cho chúng ta trong khoảng cách đầu ra mới.

k, p = Đoạn đầu vào. K được sử dụng để trở lại bản gốc vì nó không được gán lại trong khi thực thi tập lệnh. Tôi kiểm tra so với x để biết khi nào cần thêm một dòng mới cho mục đích giãn cách.

y, i = y là một "con trỏ" sắp xếp, theo dõi vị trí cuối cùng mà một nhân vật được tìm thấy để chúng tôi tìm thấy đoạn văn một cách chính xác cho mục đích ghép nối, tôi là kiểm tra sự tỉnh táo, nếu chúng tôi không đánh tất cả các nhân vật của mình, chúng tôi sẽ hoàn nguyên đoạn (biến p) về đầu vào ban đầu của nó thông qua biến k.

h = Chiều dài đầu vào, mà chúng ta sử dụng trong nối.

x = Vị trí của ký tự hiện tại được đại diện bởi C, cũng được sử dụng để ghép nối.

c = Ký tự trong l để lặp và tìm kiếm.

Đoạn mã sau được sắp xếp lại và tách ra khỏi mã ban đầu để dễ đọc như những gì đang xảy ra:

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

Tôi muốn đánh giá phản hồi của bạn! Tôi đang tìm cách để học hỏi.


Tôi đã cung cấp một chỉnh sửa với một số thủ thuật trong đó. Chỉ cần hỏi tôi nếu bất kỳ trong số họ cần một lời giải thích. Lưu ý rằng nó có thể được đánh gôn xa hơn, rất nhiều, nhưng tôi sẽ để nó xuống cho bạn. :)
xem

@TheRare Cảm ơn! Tôi thực sự thích dòng "i = + x <0" mà bạn cung cấp trong bản chỉnh sửa của mình, trái ngược với dòng "if x == - 1: i + = 1" của tôi. Chỉ để chắc chắn rằng tôi đang đọc đúng, đây là một trong những điều tạm thời tôi đã đọc về tối qua, phải không? Về cơ bản, nó đọc, "nếu x nhỏ hơn 0 (-1 được trả về khi không thể tìm thấy char): thêm x vào i" Đúng không? Vì vậy, nó vẫn đáp ứng kiểm tra độ tỉnh bằng -1 hoặc ít hơn cho một giá trị, phải không? Muốn chắc chắn rằng tôi đang đọc đúng, vì đó là một trình tiết kiệm không gian tuyệt vời!
0xhughes

Trên thực tế, nó thêm x<0vào i. Trong python True giống với 1 và Sai giống như 0. Vì vậy, nếu x là -1, thì nó thêm 1 và nếu không thì 0. i+=giống nhưi=i+
seequ

Hãy thử những gì True == 1cho. :)
xem
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.