プログラマーの日の異常なお祝い-2

はこの記事で今年始めた伝統を続けたいと思います (ところで、彼らはまだそれを覚えていることを非常に嬉しく思います )、そして私のお祝いを異常でプロフェッショナルにするためのいくつかの方法について話したいです。 今回、私は単に「おめでとう」と出力しました-条件付きで非労務的な方法はその年に終了しました。



方法1.マジック




このノミネートでは、私たちが毎日使用する完全に通常の言語、この場合はC ++(従来はC)での専門的なトリックが伝統的に提唱されています。



  #include <stdio.h>
 int main()
 {int A = 10、B = A ^ 1937006968、C = B ^ 337251857;
     printf((char *)&C);
 } 




免責事項。 このトリックは低レベルのメモリ操作を使用します。 結果は、使用しているコンピューターのアーキテクチャーとコンパイラーによって異なる場合があります。



この方法については、記事「 数値署名 」で詳しく説明しました。 これは、目的の文字列のバイトセットを含む数値を作成し、それらを文字列として出力することに基づいています。 難読化を改善するために、他の数字に対する操作の結果として目的の数字を計算できます。この場合、他の表示モードでは意味のある線のように見える数字はありません。



方法2.スパイウェア




昨年、この推薦でホワイトスペースコードが導入されました。 明白な選択は、目に見えない何かを書く必要があるときですが、それだけではありません。 今年は、ほぼ同じ効果を得るためにRubyを使用しています。



 印刷する
                                                                                                  
                                                                                                              
                                                                                                             
                                                                                                      
                                                                                                                 
                                                                                                
                                                                                                                   
                                                                                                                  
            
          
 ".map {| z | z.size.chr} 




もちろん、それほど印象的ではありません。 このスペースの暴動をフレーミングするチームを妨害する。 しかし、プログラムは簡単な例として書かれているわけではありません。引用符で囲まれた各文字列は、文字列の長さに等しいASCIIコードを持つ単一の文字に変換されます。 行の内容は完全に無関係です。たとえば、そこに明示的なテキストまたはASCIIアートを入力できます。



 印刷する
                                                                                                  
                                                                                                              
  ## ## #### ##### ##### #### ## ## #### ##### #####                                       
  ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##                               
  ###### ###### ##### ##### ###### ###### ###### ##### #####                                           
  ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##                         
  ## ## ## ## ##### ## ## ## ## ## ## ## ## ## #########                                            
                                                                                                                  
            
          
 ".map {| z | z.size.chr} 




方法3.劇的な




これは、昨年発表された方法の修正ほど独立した方法ではありません。 私はまだシェークスピア通訳を立ち上げることができましたが、残念なことに、おめでとうはそこから始まりませんでした。 まず第一に、言語は通訳者の作者に知られているシェークスピアのキャラクターのみを認識します。 アリエルもプロスペロもカリバンも彼らの中にはいません。 同じことが語彙にも当てはまります。モルモットや酔っぱらいのおっぱいはなく、著者によって承認された語彙のみです(やや貧弱)。 最後に、形容詞は感情的な色付けで名詞と一致しなければなりません。 これらのすべてのルールを順守すると、テキストに厳しい制限が課され、その魅力のほとんどが奪われます。



方法4.クラシック




昨年、私はすばらしいBefunge言語を完全に不当に非難しました-マスクされたおめでとうが見事に書かれています。ちょっとした工夫が必要です。 たとえば、次のように:



  v> AA vBBB> RRR AA v> AA vBBB>:#、_ @ I
 "" AA "B" RAA "" AA "B" RIII
 SHHT AAAA ABBB RRRR AAAA GHHN AAAA OBBB CRRR III
 "" AA "B" RAA "" AA "B" R   
 > ^ AA> BBB ^ RR AA> ^ AA> BBB ^ RR ooo 




碑文をよく見ると、文字v、>および^が文字の行に沿って命令ポインターを指示していることがわかります。 カーソルの回転の間に、組み込みコマンドが追加されて、「文字」の形でスタックに文字が追加されます。Befungeでは、二重引用符がモードをコマンドの解釈からスタックへの文字入力に切り替えます。 パスに沿って命令ポインタに入る余分な文字は、単に無視されます。 プログラムは、最後のR文字で終了し、最初の2つの感嘆符は、スタックから文字をプッシュするループで終了します(スタックでのヒットの逆順)。



方法5.装飾的な




このセクションでは、 Pietでプログラムを提供します。この言語は、昨年のBrainlollerよりも創造性の余地を残しています。



画像



文字のASCIIコードはブロックサイズでエンコードされ、色は「スタックの最後のブロックのサイズを追加-スタックの一番上に文字を配置-繰り返し」という一連のアクションを指定します。



そして最後に



方法6.ボーナス




私はさまざまな競争が本当に好きで、プログラマーの日の最高のお祝いはプロの競争だと心から信じています。 レフシャと彼のチームは同じことを信じており、私たちは力を合わせてこのようなコンテストを作成しました。 残念ながら、私たちは休暇そのものの時間を持っていませんでしたが、10月に間違いなくそれを開始します! それまでの間、将来のcoder2011.ruコンテストのサイトでベータテストに登録し、 ここでお気に入りのトピックに投票できます。



All Articles