この課題の目的は、次の条件を満たすプログラムを作成することです。
プログラムはパリンドロームではなく、本質的にパリンドロームでもありません(プログラムの効果を変更せずに文字を削除してパリンドロームにすることができることを意味します)。
プログラムはインボリューションではありません(出力で実行されたときに元の入力を生成しないことを意味します)
逆極性のプログラムは、通常のプログラムの逆です。そのため、反転したプログラムが通常のプログラムの出力で実行されると、元の入力が返されます。
何をしない逆極性はどういう意味ですか?まあ、それは言語によって異なります。
- ほとんどの非エソランでは、これは単一の操作でサブ操作の順序を逆にし、引数の順序を逆にし、ハードコードされたリスト/配列/タプル/辞書/スタック/キュー/などのコンテンツも逆にすることを意味しますコードブロックとスタンドアロン行の順序を逆にする(ただし、ブロック内の行は逆にする)
例:
Haskell:
x`mod`y
-> y`mod`x
; zipWith ((*3).(+)) [1,2,3] [4,5,6]
->zipWith ((+).(*3)) [6,5,4] [3,2,1]
Python:2**3
-> 3**2
; for x,y in [(1,2),(3,4),(5,6)]
->for y,x in [(6,5),(4,3),(2,1)]
1文字の関数(Pyth、APLなど)がある言語の場合は、単に命令の文字列を逆にする
BFのような1次元のエソランの場合、指示を逆にするか、極性を入れ替えます。極性のスワップは
[]
->{}
、+
->-
、-
->+
、>
-><
、<
->>
、.
->,
、および,
->.
(両方ではない)Befungeのような2次元のエソランの場合は、x軸またはy軸または対角線を横切る反射を実行するか、180度回転するか、反射と回転の組み合わせを行うことができます
可換演算は許可されますが、回文演算は許可されません。2*x
問題ありませんが、x+x
悪いです。極性反転の定義はかなり緩やかですが、何が理にかなっているのかを判断してください。オブジェクトは、最も賢い抜け穴を見つけることではなく、最も賢い解決策を見つけることです。
これは人気のあるコンテストなので、非常に巧妙な抜け穴が人気があるかもしれませんが、この挑戦の精神の範囲内に収まるようにしてください。少なくとも1つの賛成票を持つ少なくとも10のソリューションがあり、少なくとも1つの賛成票を持つ提出よりも多い少なくとも1つの解決策がある場合、勝者は発表されます。または1か月のうち、どちらか早い方。これは私の最初の課題です。したがって、公平で建設的なフィードバックを提供するようにしてください。また、これが不合理な課題であるか、何らかの方法で誤分類または曖昧であるかどうかもお知らせください。ここで説明した鳩の巣のいずれにも当てはまらない言語について質問がある場合は、コメントしてください。特定の明確化やルール変更に対する強い抗議がある場合は、コミュニティの意志に屈します。
更新
このコンテストが開始されてからちょうど1か月が経ちました(たまたま、実際に時間通りに行っていることを知らずに、偶然それを確認しました)。これは人気コンテストであるため、(地滑りによる)勝者は Pietu1998-Befungeです。下部のコンポーネント(テキストリバースと逆アルファベット)は両方ともインボリューションですが、エンコーダー/デコーダーはインボリューションではありませんので、問題はありません。真ん中に「BEFUNGE」を書くことに成功したことに対するボーナスポイント(私の考えでは)。私は個人的には、ZgarbのTheseusソリューションの斬新さが気に入りました。言語が(制限されていれば)クールに見えるからです。参加してくれたすべての人に感謝し、勝者が選ばれた間、私はこのコンテストを完全に公開したままにして、将来の提出を歓迎します。
()
パリンドロームですか?技術的には、逆は)(
です。