枢機Codeコードチャレンジ


24

仕事

あなたは、ある種のコンパスの作成を担当しています。

ソースコードをコンパスの「針」として想像してください。異なる方向で実行すると、明確な出力が生成されます。

サポートされるソースコードの向きは、北、東、南、および西です。

ソースコードがあるとしましょう:

ABCD
 J K
WXYZ

これを北向きと見なし、時計回りに90度回転すると東を指します。

W A
XJB
Y C
ZKD

再び南のポイントを回転させる:

ZYXW
K J 
DCBA

そして最後に、西への最後のローテーション:

DKZ
C Y
BJX
A W

実行すると、上記の各コード例は、選択した単一の個別の印刷可能なASCII文字を出力するはずです。

ノート

コードには何も入力しないでください。

空のスペースや新しい行は、回転しても折りたたまれたり消えたりしません。

出力の先頭/末尾の改行は問題ありません。

回答は、プログラムまたは関数全体である場合があり、STDOUTに出力されるか、関数の結果を返します。

標準の規則が適用されます。バイト単位の最短回答が勝ちます!


複数の文字を出力できますか?
氏Xcoder

1
完全な長方形になるようにコードをスペースで埋める必要がありますか(そしてスコアでそれらのスペースを数えますか)?たとえば、最初のコードが提出である場合、このような形のコードは有効ですか?
ビジネス猫

2
別に出力仕様から、私が思うに、これは重複している
デジタルトラウマ

1
@BusinessCat長方形を作成するためにコードを埋め込む必要はありません-指定した例は有効です。
CzarMatt

4
@ Mr.Xcoder Um、4つの同一のプログラムが4つの異なるASCII文字をどのように印刷できますか?
ETHproductions

回答:


20

ゼリー、2 バイト

*2

オンラインでお試しください!

Jellyプログラムのメインエントリは最後のリンクであり、改行文字がリンクを分割することに注意してください)、2行のプログラムはどちらも実際にトップリンクにアクセスしません。

暗黙的に結果を出力する4つの完全なプログラムは次のとおりです。

*2   -> (implicit) zero raised to the power of 2 = 0

*
2    -> literal 2 = 2

2*   -> two raised to the power of (implicit) 2 = 4

西

2
*    -> (implicit) zero raised to the power of (implicit) zero = 1

1
これが最終的な答えです。よくやった。
エリックアウトゴルファー

19

Japt3 2バイト

gy

どういうわけか、どういうわけか、私は非常にハッキングされた2バイトのソリューションを見つけました...


北の出力0

gy

暗黙的な入力がないため、デフォルトは0です。g数値の"y"場合、引数(この場合)に関係なく数値の符号を返します。


出力2

g
y

複数行のプログラムでは、最初の行が入力をその結果に設定します。gon 00ですので、これは基本的にノーオペレーションです。そしてy0and ... のGCDを返します。引数がないため、デフォルトは2(ありがとう、@ Oliver!)です。これは2出力として提供されます。


南の出力g

yg

y前と同様、GCDです。以来、GCD(0、X)であり、X、任意の値のためy0だけ引数を返すの自由を取ります。この場合、引数は"g"であり、これが結果です。


西出力1

y
g

y前と同様に、0でを返します2。次に、これはに渡されますg(既に説明したように)。これは、数値の符号関数です。したがって、結果は1です。


8

Java(OpenJDK 8)7309 4421 855バイト

Leaky Nunの
おかげで-2888バイト、Wheat Wizardのおかげで-3566バイト

//i/////////////////////////////////////////////////////////////
//n//////////////////////////////////////////////////////////////////
interface M{static void main(String[]a){System.out.println(0);}}/////
//e//}};)2(nltnirp.tuo.metsyS{)a][gnirtS(niam diov citats{M ecafretni
//r//////////////////////////////////////////////////////////////////
//f}/////////////////////////////////////////////////////////////////
//a}//
//c;//
//e)//
// 3//
//M(//
//{n//
//sl//
//tt//
//an//
//ti//
//ir//
//cp//
// .//
//vt//
//ou//
//io//
//d.//
// m//
//me//
//at//
//is//
//ny//
//(S//
//S{//
//t)//
//ra//
//i]//
//n[//
//gg//
//[n//
//]i//
//ar//
//)t//
//{S//
//S(//
//yn//
//si//
//ta//
//em//
//m //
//.d//
//oi//
//uo//
//tv//
//. //
//pc//
//ri//
//it//
//na//
//tt//
//ls//
//n{//
//(M//
//1 //
//)e//
//;c//
//}a//
//}f//
///r//
///e//
 //t//
 //n//
 //i//

オンラインでお試しください!

古いバージョン

code ^ 2の四角を囲むコメントを使用した簡単なアプローチは、ほとんどすべての言語で実行できます。
Pythonの(より読みやすい)例

##p#####
# r  2 #
print 1#
# n  t #
# t  n #
#4 tnirp
# 3  r #
#####p##

偉大な一般的な評価、今私はそれを行う方法を理解する必要があります!:)
flawr

interface M{static void main(String[]a){System.out.println(0);}}代わりに使用して、いくつかのバイトを節約できます。
リーキー修道女


1
@MagicOctopusUrn手作業ではありませんc;
ロッド

1
@MagicOctopusUrn nah、私はこのアルゴリズムを示すためにこの答えをしました、言語は無関係です:3-
ロッド

7

Brain-Flak、33バイト

##)(##))()()  ((
((  ))##    ()##

オンラインでお試しください!

Brain-Flak、33バイト

##)     ## #
(( ))#)())()
  # ( (

オンラインでお試しください!

Brain-Flak、36バイト

#)##     ## #
  (())#)())()
 #   ( (

オンラインでお試しください!

Brain-Flak、38バイト

######  (#
(()()())#))((
       #(  ##

オンラインでお試しください!

Brain-Flak、41バイト

##(#####(#
(()()())#
##))()((
####((#)#)#

オンラインでお試しください!


なんてこった!私は1つに取り組んでいましたが、どこにも行けませんでした。何かを理解するには、少なくとも30〜40分かかると思いました。これは素晴らしいです!
DJMcMayhem

1
これはとてもクールです!
CzarMatt

あなたをゴルフしよう:P今のところ3人が働いている
クリストファー


5

Befunge、17 13バイト

Befungeは幾何学的な問題にとっては楽しいと思いました。ここには他の人と同じような些細な4x4ソリューションがあります(3つのコマンドが必要です)が、私はもう少し良くなりました。

編集:改行を忘れた

編集2:猫を作成できることに気づいた

編集3:猫は死んでいる

2v3
@.v
.  
1@.

RIPキティ:<

1.@ 2
^._.^
3 @.4

5

05AB1E5 3バイト

Y'X

西


印象的で、それは迅速でした!
CzarMatt

@MagicOctopusUrnうまくいくと思いますY'Xが、まだ試してみる必要があります。
ライリー

@Rileyは、前方および後方にY'Xも機能し、有効です。それでも2バイトを探しています。「ドットコマンド」はどれも機能しないため、その存在は疑わしいです。
魔法のタコUr

@MagicOctopusUrn改行が機能する2バイトのソリューションがあるとは思いません。フォースをブルートするのは難しくありません。
ライリー

10出力に複数の文字が許可されていれば機能していました; P. *
マジックタコUr

4

C(gcc)283 279 209バイト

/////////)pm//
/////////;ua//
main(){//}ti//
puts("N"//sn//
);}///////((//
//////////")//
///"//////W{//
///E//////"///
//)"//////////
//((///////};)
//ns//"S"(stup
//it}//{)(niam
//au;/////////
//mp)/////////

オンラインでお試しください!

ここでも同じ古いコメントトリックですが、少なくともCではこれは大したことはありません;)


ギャップのすぐ右端にある4つのスラッシュのいずれかが必要ですか?
-ETHproductions

ねえ..うーん...私は、実際に...推測します。良いキャッチ、ありがとう:)
フェリックスパルメン

私はあなたがそれぞれを移動することによって、かなりよりしっかりと一緒にパックすることができると思い);}、下の行にのようなので、(私はかかわらず、回転をテストしていない)
ETHproductions

ああ、実際のコードの後にW余分なものがあるため、現在のセットアップのプログラムは現在失敗していsnます。どうやらこれを修正するpmには、上の行の直前のスラッシュをセミコロンに変更してください。
ETHproductions

うう...おそらく時間がこれを削除してやり直すには:O(最初のバージョンは、スラッシュの広場でしたが、私は思った私は「やるだろうと気の利いたいくつかのバイト...くそ保存」の事を)
フェリックスPalmenを

4

ラビリンス、9バイト

!
2@2
 !)

プリント 0ます。オンラインでお試しください!

 2)
 @!
!2

プリント 3ます。オンラインでお試しください!

)!
2@2
  !

プリント 1ます。オンラインでお試しください!

 2!
!@
)2

印刷し2ます。オンラインでお試しください!

説明

各プログラムは、読み上げ順序で最初の非スペース(つまり、左上または中央上部の文字)から始まり、東に移動します。最初のプログラムの場合:

!   Print an implicit zero.
    The IP can't move east, so it moves south instead.
2   Push a 2.
    The IP can't keep going south, so it turns east instead.
@   Terminate the program.

2番目のプログラムの場合:

2   Push a 2.
)   Increment it to 3.
    The IP can't keep going east, so it turns south instead.
!   Print the 3.
    The IP can't keep going south, so it turns west instead.
@   Terminate the program.

3番目のプログラムの場合:

)   Increment an implicit zero to 1.
!   Print the 1.
    The IP can't keep going east, so it turns south instead.
@   Terminate the program.

4番目のプログラムの場合:

2   Push a 2.
!   Print the 2.
    The IP can't keep going east, so it turns back around to move west.
2   Push another 2.
    The IP can't keep going west, so it turns south instead.
@   Terminate the program.

4

Wumpus、7バイト

O@$
)))

印刷し0ます。オンラインでお試しください!

)O
)@
)$

印刷し1ます。オンラインでお試しください!

)))
$@O

印刷し3ます。オンラインでお試しください!

$)
@)
O)

印刷し2ます。オンラインでお試しください!

説明

最初のプログラムは非常に簡単です。O暗黙のゼロを出力し@てプログラムを終了します。

2番目のプログラムから始めて、制御フローを理解するために三角形のグリッドレイアウトを見る必要があります。

enter image description here

)   Increment an implicit zero to 1.
O   Print the 1.
))  Two irrelevant increments.
@   Terminate the program.

3番目のプログラムの場合:

enter image description here

))) Increment an implicit zero to 3.
O   Print the 3.
@   Terminate the program.

4つ目は、本当にファンキーになります。破線は、$以下によってスキップされるため実行されないセルを示します。

enter image description here

$   Skip the ).
$   Skip the @.
))  Increment an implicit zero to 2.
O   Print the 2.
))  Two irrelevant increments.
@   Terminate the program.

超クールで素晴らしい図表も。
CzarMatt

3

PowerShell20 11バイト

#4#
1#3
#2#

侵害コメント(#狂ったような)、及びパイプライン上に配置された単一の数字として、ある出力を取得しているという事実。上記の印刷物1オンラインでお試しください!

ここから、各回転がコメントの「左側」にある1つの数字のみを生成することが簡単にわかります。したがって、1回の回転で出力される数字は1つだけです。

Wheat Wizardのおかげで9バイト節約されました!


PowerShellを知らないだろうがしないでください。この作品?
ウィートウィザード

@WheatWizardはい、確かに。ありがとう!
AdmBorkBork

3

星空、34バイト

  zz  
  +   
   .  
    + 
      

または、スペースをハイフンとして表示して、表示できるようにします。

--zz--
--+---
---.--
----+-
------

オンラインでお試しください!

Starryのコマンドは +.および他のいくつかのものであり、それらが行うことはそれらの前にあるスペースの数によって決定されます:a +with nのスペースをプッシュnは -5スタックへ、および.スペースの偶数がそれを出力しています。zsおよび改行は完全に無視されます。

最初の前に6つのスペースがある+ので、6-5 = 1をプッシュし、.印刷します。

そして回転:

-----
-----
---+z
--.-z
-+---
-----

オンラインでお試しください!これは「8」を印刷します。

------
-+----
--.---
---+--
--zz--

オンラインでお試しください!これは「2」を印刷します。

-----
---+-
z-.--
z+---
-----
-----

オンラインでお試しください!そして、これは「3」を印刷します。


なんて素敵な言語。また、長方形を形成するために空白で埋める必要があるとは決して言いませんでした。しかし、ソースがスペースに依存している場合は、スペースを数える必要があると思います。
CzarMatt

@CzarMatt、説明ありがとう!投稿を更新しました。
ツリーではない


2

バッチ、90バイト

 :: :::@:
:&s ohce@
:e   : c:
      :h:
:o     o:
:h:
:c :   w:
@echo n&:
:@::: ::

バッチには実際にはコメント文字がありません。行全体のコメントの場合:、ラベルを導入するので機能しますが、echo逆にすると何もしなくてもコマンドを終了するために何かが必要です。&:私はここで必要なすべてであるようですが、バッチを本当に混乱させ、次の行の:前にaを入れないとエラーに@なり、また改行を印刷するのを忘れます。


2

MATLAB、29 17 5 11バイト

質問が単なるASCII文字を要求するのは単なる出力ではなく、それを実現するMATLABのアプローチです。

%4%
1%3
%2%

これは、回転に応じて暗黙的に1、2、3、または4を印刷します。


考えてみると、これはMATLでも機能します。ただし、私と同じバイト数です。
-Sanchises



1

JS、17 B

//1//
2///4
//3//

出力:
北:2、
東:3、
南:4、
西:0.33333333333…。
(例:2、3 / 1、4、1 / 3)


PPCGへようこそ!これは有効ではないと思います。REPL以外の環境では、数字は表示されません。(私はそこに間違っているかもしれません)
ザカリー

(JSの後にREPLを追加するだけで大​​丈夫だと思います)
ザカリー

1
出力は単一の印刷可能なASCII文字である必要があるため、私のMATLABのように、これは無効です。
トムカーペンター

1

申し訳ありませんが、私は意味:

//0//
////
 1/2
/////
//3//

および28B。そして、0.5、3、2、0として出力します。


PPCGへようこそ!言語名とバイトカウントをヘッダーに入れる必要があります。そして、これはスニペットであり、完全なプログラムや関数ではなく、有効ではありません。(私は間違っているかもしれません)
ザカリー

ザカリー@私は思うcodegolf.meta.stackexchange.com/questions/7842/...が REPLsが許可されていることを述べている
SuperStormer

いずれにせよ、彼らはそれがJS REPLであることを指定すべきです。
ザカリー

2
出力は単一の印刷可能なASCII文字である必要があるため、私のMATLABのように、これは無効です。
トムカーペンター

1

JavaScript(ES6)、86バイト

北は0、東は1、南は2、西は3を出力します。

////  _//
////  =//
_=>0//>//
  ////1//
  // //
//3////
//>//2>=_
//=  ////
//_  ////


1

MATL、11バイト

HxI
xFx
TxK

オンラインでお試しください!

これをMATLで始めましょう。主な課題は、スタックが空の場合に関数に入力が必要な場合にMATLが失敗することです。おそらくのような修飾子と巧妙な何かXYZ&短く何かを作ることができますが、私は適切な組み合わせを見つけることができませんでした。

説明:すべての文字がスタック上の単一の整数をプッシュしx、最後の文字を除くすべての文字を削除します。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.