[解決済み] コードゴルフ - π day
2023-02-08 08:47:04
質問
チャレンジ
半径の円の表現を表示するための、文字数で最も短いコード
R
を使って
*
文字を使用し、πの近似値が続きます。
入力は数字1つ。
R
.
ほとんどのコンピュータはほぼ2:1の割合で出力されるようなので、以下のような行だけを出力すればよいでしょう。
y
が変な行だけ出力するようにします。これはつまり
R
が変な場合は
R-1
の行を表示します。に対する新しいテストケースがあります。
R=13
を明確にするためです。
を例とします。
Input
5
Output Correct Incorrect
3 ******* 4 *******
1 ********* 2 *********
-1 ********* 0 ***********
-3 ******* -2 *********
2.56 -4 *******
3.44
編集します。
の奇数値による混乱が広まっているため
R
という4つのテストケースに合格したソリューションであれば、どのようなものでも受け入れられます。
の2倍で割ってπの近似値を与える。
*
の文字数の2倍を
R²
.
近似式は少なくとも有効数字6桁まで正しくなければなりません。
先頭または末尾のゼロは許可されています。
3
,
3.000000
,
003
の入力は許可されます。
2
と
4
.
コード数には入出力(つまりプログラム全体)が含まれます。
テストケース
Input
2
Output
***
***
3.0
Input
4
Output
*****
*******
*******
*****
3.0
Input
8
Output
*******
*************
***************
***************
***************
***************
*************
*******
3.125
Input
10
Output
*********
***************
*****************
*******************
*******************
*******************
*******************
*****************
***************
*********
3.16
ボーナステストケース
Input
13
Output
*************
*******************
*********************
***********************
*************************
*************************
*************************
*************************
***********************
*********************
*******************
*************
2.98224852071
どのように解決するのですか?
dcでは、88と93 <ストライク 93 94 96 102 105 129 138 141 文字数
念のため、この時点では、私は OpenBSD といくつかの移植不可能と思われる拡張モジュールを使用しています。
93文字です。これは、FORTRAN の解と同じ式に基づいています (テストケースとは若干異なる結果です)。すべての Y に対して X^2=R^2-Y^2 を計算します。
[rdPr1-d0<p]sp1?dsMdd*sRd2%--
[dd*lRr-vddlMr-32rlpxRR42r2*lpxRRAP4*2+lN+sN2+dlM>y]
dsyx5klNlR/p
88文字。反復解法。テストケースと一致する。すべてのXとYについて、X^2+Y^2<=R^2かどうかをチェックする。
1?dsMdd*sRd2%--sY[0lM-[dd*lYd*+lRr(2*d5*32+PlN+sN1+dlM!<x]dsxxAPlY2+dsYlM>y]
dsyx5klNlR/p
実行するには
dc pi.dc
.
以下は古い注釈付きバージョンです。
# Routines to print '*' or ' '. If '*', increase the counter by 2
[lN2+sN42P]s1
[32P]s2
# do 1 row
# keeping I in the stack
[
# X in the stack
# Calculate X^2+Y^2 (leave a copy of X)
dd*lYd*+
#Calculate X^2+Y^2-R^2...
lR-d
# .. if <0, execute routine 1 (print '*')
0>1
# .. else execute routine 2 (print ' ')
0!>2
# increment X..
1+
# and check if done with line (if not done, recurse)
d lM!<x
]sx
# Routine to cycle for the columns
# Y is on the stack
[
# push -X
0lM-
# Do row
lxx
# Print EOL
10P
# Increment Y and save it, leaving 2 copies
lY 2+ dsY
# Check for stop condition
lM >y
]sy
# main loop
# Push Input value
[Input:]n?
# Initialize registers
# M=rows
d sM
# Y=1-(M-(M%2))
dd2%-1r-sY
# R=M^2
d*sR
# N=0
0sN
[Output:]p
# Main routine
lyx
# Print value of PI, N/R
5klNlR/p
関連
-
[解決済み] カスタムクラス」の意味を教えてください。
-
[解決済み] 言語バインディングとは何ですか?
-
[解決済み] ディープコピーとシャローコピーの違いは何ですか?
-
[解決済み】マジックナンバーとは何ですか、なぜ悪いのですか?[クローズド]
-
[解決済み】すべての再帰は反復に変換できる?
-
[解決済み] パワーメーターの赤と緑の間の色を生成する?
-
[解決済み] シマウマは誰のものか」をプログラムで解決する?
-
[解決済み] パラメータと引数の違い【重複
-
[解決済み] fold-leftを使うタイミングとfold-rightを使うタイミングはどのように見極めるのですか?
-
[解決済み] 例外処理とリターンコードのどちらが好きか、またその理由は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 言語バインディングとは何ですか?
-
[解決済み】キャメルケースの頭字語【終了しました
-
[解決済み】'foo'の本当の意味は?[クローズド]
-
[解決済み] TypeとClassの違いは何ですか?
-
[解決済み] プログラミングにおける "Context "という言葉?[クローズド]
-
[解決済み] モノリシックカーネルとマイクロカーネルの違いは何ですか?
-
[解決済み] シマウマは誰のものか」をプログラムで解決する?
-
[解決済み] なぜナップザック問題は擬似多項式なのか?
-
[解決済み] 浮動小数点数の比較はどのようにすればよいのですか?
-
[解決済み] 大文字と小文字が異なるだけの変数名を使用するのは不道徳ですか?