幸せなプログラマーの日!! atsimmargorp mend S(クインパリンドローム)

プログラマーの日のお祝いにも参加します! そして、私はクインパリンドロームの助けを借りてそれを行います。



最近、 マルチクインジェネレーターに関する記事や、クインに関する他の投稿を読んで、クインの分野でも興味深い非標準的なことをしたかったのです。 クインパリンドロームの概念は表面にあるため、長い間考える必要はありませんでした。



クイン


だから、私が必要なものを理解するために、すぐにウィキペディアで既製の馬を取り、それを修正しようとすることにしました。



パリンドローム


女王の回文をすぐに書くことは私にとって大変でした。 そこで、定期的な回文プログラムから始めることにしました。 しかし、コンパイルされていない文字セットを取得するため、逆ソースのときに正しく実行されるようにプログラムを書く方法は? このすべてのゴミについてコメントできることがすぐにわかります。 C#には2種類のコメント(単一行と複数行)があるため、対応するプログラムも記述されています。



単一行コメント
//}}{)(niaM diov citats{P ssalc class P{static void Main(){}}//
      
      







複数行コメント
 /**/class P{static void Main(){}};/*/;}}{)(niaM diov citats{P ssalc/**/
      
      





2番目のオプションは、改行があるかどうかに依存しないため、より優れています。 私はすぐにそれを考えませんでした。 ただし、後でstackoverflowでさまざまな言語の回文プログラムをGoogleで検索することができました。



プログラムをチェックするためのユーティリティ


コメントのコードを逆にするのは退屈なプロセスであり、エラーが発生する可能性があるため、馬の回文を書く前に、回文の行をチェックするメソッドと、さらに興味深いことに、入力文字列をコンパイルできるかどうかをチェックするメソッドが作成されました。 もしそうなら、コンパイルされたプログラムは空ですか? 次のようになります。

実行時に行からプログラムをコンパイルする
 public static CheckingResult CompileAndGetOutput(string program) { CompilerResults compilerResults = null; using (CSharpCodeProvider provider = new CSharpCodeProvider()) { compilerResults = provider.CompileAssemblyFromSource(new CompilerParameters(new string[] { "System.dll" }) { GenerateExecutable = true }, new string[] { program }); } CheckingResult result; if (compilerResults.Errors.HasErrors) { result.FirstErrorLine = compilerResults.Errors[0].Line; result.FirstErrorColumn = compilerResults.Errors[0].Column; result.Output = null; } else { try { Process process = Process.Start(new ProcessStartInfo(compilerResults.PathToAssembly) { UseShellExecute = false, CreateNoWindow = true, RedirectStandardInput = true, RedirectStandardOutput = true }); process.StandardInput.WriteLine(Environment.NewLine); process.WaitForExit(); string output = process.StandardOutput.ReadToEnd(); try { File.Delete(compilerResults.PathToAssembly); } catch { } result.FirstErrorLine = -1; result.FirstErrorColumn = -1; result.Output = output; } catch { result.FirstErrorLine = 0; result.FirstErrorColumn = 0; result.Output = null; } } return result; }
      
      









クインパリンドローム


縮小化を数回試みた結果は次のとおりです。 (プログラムは半分で記述され、記述しやすいようにフォーマットされました。その後、スペースが削除され、欠落部分がコメントとして先頭または末尾に追加されました。)



単一行コメントを使用したクイリンパリンドローム:

 //}};)s+"r\n\r\"+)c(gnirts wen(etirW.elosnoC;)c(esreveR.yarrA;)(yarrArahCoT.s=c rav;)'\\','"',s,s(tamroF.gnirts=s;"//}}}};)s+}1{r}2{n}2{r}2{}1{+)c(gnirts wen(etirW.elosnoC;)c(esreveR.yarrA;)(yarrArahCoT.s=c rav;)'}2{}2{','}1{',s,s(tamroF.gnirts=s;}1{}0{}1{=s rav{{)(niaM diov citats{{P ssalc;metsyS gnisu"=s rav{)(niaM diov citats{P ssalc;metsyS gnisu using System;class P{static void Main(){var s="using System;class P{{static void Main(){{var s={1}{0}{1};s=string.Format(s,s,'{1}','{2}{2}');var c=s.ToCharArray();Array.Reverse(c);Console.Write(new string(c)+{1}{2}r{2}n{2}r{1}+s);}}}}//";s=string.Format(s,s,'"','\\');var c=s.ToCharArray();Array.Reverse(c);Console.Write(new string(c)+"\r\n\r"+s);}}//
      
      







複数行コメントを使用したクイリンパリンドローム:

 /*  !*/using System;class P{static void Main(){var s="{2}*  !*/using System;class P{{static void Main(){{var s={1}{0}{1};s=string.Format(s,s,'{1}','{2}');var c=s.ToCharArray();Array.Reverse(c);Console.Write(s+'*'+new string(c));}}}}/";s=string.Format(s,s,'"','/');var c=s.ToCharArray();Array.Reverse(c);Console.Write(s+'*'+new string(c));}}/*/}};))c(gnirts wen+'*'+s(etirW.elosnoC;)c(esreveR.yarrA;)(yarrArahCoT.s=c rav;)'/','"',s,s(tamroF.gnirts=s;"/}}}};))c(gnirts wen+'*'+s(etirW.elosnoC;)c(esreveR.yarrA;)(yarrArahCoT.s=c rav;)'}2{','}1{',s,s(tamroF.gnirts=s;}1{}0{}1{=s rav{{)(niaM diov citats{{P ssalc;metsyS gnisu/*!  *}2{"=s rav{)(niaM diov citats{P ssalc;metsyS gnisu/*!  */
      
      







このテーマでは、クインパリンドロームへの理にかなったリンク1つだけ見つけることができました。 ただし、C#には解決策がありませんでした。



githubのプロジェクトへのリンク:(将来、コレクションが更新されます): Freaky-Sources



他の言語のクインディなパリンドローム、およびatsimmargorpの日または31 ozintyapを記念するパリンドローム、またはすべてを一緒に注解してください:)



バグが減り、興味深いアイデアが生まれ、この素晴らしい一日の良い金曜日になりますように!



非表示のテキスト
! ,,,,



):13日曜日または金曜日、またはあなたと話したいプログラマーの場合、カナダのhackyzya higurd anmordnilap-yyyavnemmokです



secruoS-ykaerF :) yatyanlopop willowitz



。#C an yainesher yolazako en mat okand O. mordnilap-nyavk an uklyss uunled undo oshil ityan solodu ekitamet yonnad oP



/ *幸せなプログラマーの日!* /システムの使用;クラスP {static void Main(){var s = "{2} *幸せなプログラマーの日!* /システムの使用;クラスP {{static void Main(){{var s = {1} {0} {1}; s = string.Format(s、s、 '{1}'、 '{2}'); var c = s.ToCharArray(); Array.Reverse©; Console。書き込み(s + '*' +新しい文字列©);}}}} / "; s = string.Format(s、s、 '"'、 '/'); var c = s.ToCharArray(); Array.Reverse ©; Console.Write(s + '*' +新しい文字列©);}} / * /}};))c(gnirts wen + '*' + s(etirW.elosnoC;)c(esreveR.yarrA;)(yarrArahCoT .s = c rav;) '/'、 '"'、s、s(tamroF.gnirts = s;" /}}}};))c(gnirts wen + '*' + s(etirW.elosnoC;)c (esreveR.yarrA;)(yarrArahCoT.s = c rav;) '} 2 {'、 '} 1 {'、s、s(tamroF.gnirts = s;} 1 {} 0 {} 1 {= s rav { {)(niaM diov citats {{P ssalc; metsyS gnisu / *!atsimmargorp mend C *} 2 {"= s rav {)(niaM diov citats {P ssalc; metsyS gnisu / *!atsimmargorp mend C * /



:WeiratnemmokHeinchtsoghömMeinauzlopsi with Mordnilap-New York



//}};)s + "r \ n \ r \" +)c(gnirts wen(etirW.elosnoC;)c(esreveR.yarrA;)(yarrArahCoT.s = c rav;) '\\'、 '" '、s、s(tamroF.gnirts = s; "//}}}};)s +} 1 {r} 2 {n} 2 {r} 2 {} 1 {+)c(gnirts wen(etirW.elosnoC ;)c(esreveR.yarrA;)(yarrArahCoT.s = c rav;) '} 2 {} 2 {'、 '} 1 {'、s、s(tamroF.gnirts = s;} 1 {} 0 {} 1 {= s rav {{)(niaM diov citats {{P ssalc; metsyS gnisu "= s rav {)(niaM diov citats {P ssalc; metsyS gnisu



using System; class P {static void Main(){var s = "using System; class P {{static void Main(){{var s = {1} {0} {1}; s = string.Format(s 、s、 '{1}'、 '{2} {2}'); var c = s.ToCharArray(); Array.Reverse©; Console.Write(新しい文字列©+ {1} {2} r {2 } n {2} r {1} + s);}}}} //”; s = string.Format(s、s、 '"'、 '\\'); var c = s.ToCharArray(); Array.Reverse©; Console.Write(新しい文字列©+ "\ r \ n \ r" + s);}} //



:weiratnemmok hincortsondo meinaroslopsi with mordnilap-nyav



)veiratnemmokの.priceまたはolachanが、世界で最高のオファーとサルベージ、その他の食料品の少なくとも1つを食べたことがある。



モーダル



冬の水泳冬の休日zee ammargorp



:Kat Onmeerp Ote Thyldalgy? monyavk ammargorp yaannavorilipmoksイルyasteyalvya地獄からilsE.yastavorilipmok enil SI yaandohvイルtezhom、ogot ikrevorp yald ydotem、onseretni eelob TSS及びtsonmordnilap ENコルツikrevorp yald ydotem ynasipan ilyb amordnilap-anyavk meinasipan derepから、imakbisho yastadzhovorpos tezhomとyyndun onlovod ssetsorp veiratnemmok yaldドッキングステーション



mmargorp ikrevorp yalit ut



.wolfrevokcats hakizia hinzar an ymordnilap-ymmargorpilgugansoladomotop okand O. yaslamudod uzars en ya fire od。



/ ** /クラスP {static void Main(){}}; / * /;}} {)(niaM diov citats {P ssalc / ** /



ミラタムノモク



//}} {)(niaM diov citats {P ssalc



クラスP {static void Main(){}} //



イラトネモク



:Eischyuuvtstevtoos ynasipan ilyb ymmargorpと、ON)及びeynchortsogonmのeynchortsondo(veiratnemmok ADIV AED #C両方kaT.rosum SOFC SEV tavoritnemmok onzhom otch、uvologでtidohirp uzarS volovmis Roban yymeurilipmoken yastichulop DEV、vokindohsi esrever PRIとsalyanlopsi onlivarpアノybotch ybotchで,? kat ummargorp ytasipan like on.amordnilap-ymmargorp yonchibo ytachan lisher i umeteo P. lie ozolazako yan yld mordnilap-nyavk ytasipan uzarS



銃口



.orroristoborpopとidepikiv an nyavk yvotog ttlazy lisar uzars I、onzhun enm ottyanop ybat、katI



NYC



.itsonchrevop anti-womenslap-wonyavk yadi ukloksop、olsolshirpen oglod btamu D. vontravnat otsalbo in eontradnatsenおよびyonseretni rydubn otchaltryudseldlyutseplyatが唯一の方法



.amordnilap-anyavk yuschomopと他のyualomod And! マイネルバルゾップのatsimmargorp yndtsechからysyanideosirpハリネズミI




All Articles