mbomb007は、自己切断プログラムを作成するように依頼しました。それは興味深い挑戦ですが、私は個人的に自分のプログラムが自傷行為になることを奨励したくありません。私は、すべてのプログラムの中心にあるのは、飛び出すのを待っている美しい蝶だと思うのが好きです。
そのため、初めてのCode Golfチャレンジでは、Stack Exchangeにバタフライを変身させます。プログラムは、独自のコードを入力および出力として受け入れ、I am a caterpillar!
その後に同じ言語の別のプログラムのコードが続く必要があります(出力間に仕切りを入れても入れなくてもかまいませんが、蝶について話しているので、可愛さは重要です!)。この2番目のプログラムは出力するはずですI am a beautiful butterfly!
変態:このプログラムは自分自身を変更する必要があるため、入力として渡されます。私は、I am a caterpillar!
ソースコードを出力するprintステートメントに他ならない退屈なネストされたプログラムが欲しくありません。コード自体を変形させる必要があるため、最も退屈な受け入れ可能な答えはI am a caterpillar
、印刷し、入力から文字列を切り取って(これはコードである)、それを印刷するものです。もちろん、これは書くための非常にトリッキーな小さな要件であるため、「挑戦の精神」と考えるべきです。正式な要件は、「プログラムにプログラムと同じ長さのランダムな文字列が与えられているI am a butterfly
場合、2番目のプログラムの実行時に5%未満の確率で印刷されるはずです」に設定されます。
概要:
- 入力として独自のコードを提供する
I am a caterpillar!
と、ソースコードのブロックが続く(間に区切り文字があるかどうかにかかわらず)印刷するプログラムを作成します。 - ソースコードのこの2番目のブロックは、同じ言語としてコンパイル/解釈されると、印刷されます
I am a beautiful butterfly!
- プログラムに入力として独自のソースコードが渡されず、代わりに独自のコードと一致しないランダムな文字列が与えられる場合、結果はコンパイル/解釈に失敗するか
I am a butterfly!
、少なくとも95%のランダムで印刷されない文字列(精神:入力から独自のソースコードを読み取り、それをつなぎ合わせてバタフライにします)。- 変身のアイデアの精神を守り、独自のコードを変更している限り、これを証明していないのは安心ですが、入力を使用して回避するために抜け穴ゲームをプレイしようとしている場合は、それを証明するために。
- 標準的な抜け穴が適用されます
これらの美しさで判断したいのですが、それは明らかに非定量的なアプローチなので、通常の「バイト数」ルートを使用して判断できます
ボーナス:-20%-プログラムの最初の3文字と一致しない3文字の文字列を選択します。caterpillarプログラムを実行しますが、最初の3文字が指定された文字に変更されるように入力を変更する場合は、I am Batman!
代わりに印刷してください。常にバットマンになりましょう。(これには同じランダムな文字列ルールが適用されます...変態!)
簡単な例(python):
"""
print "I am a beautiful butterfly!"
#print "I am Batman!"
"""
import sys
code = sys.stdin.read()
if code.startswith("YYZ"):
# swap the comments between the print statements
code = code.replace("#print", "_a").replace("print", "#print").replace("_a", "print")
code = [3:] # remove """ or XYZ
code = code.split('"""')[0]
print "I am a caterpillar!"
print code