アスタリスクの10 x 10グリッドを印刷します


83

バックグラウンド

これは、forループを示すための標準的な教科書の例です。

これは、10年ほど前にプログラミングを学び始めたときに学んだ最初のプログラムの1つです。

仕事

この正確なテキストを印刷する必要があります。

**********
**********
**********
**********
**********
**********
**********
**********
**********
**********

スペック

  • 後続の改行が余分にある場合があります。
  • 余分な末尾の改行を含め、各行の末尾に余分な末尾スペース(U + 0020)があります。

得点

これはです。バイト単位の最短回答が優先されます。

リーダーボード

これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。


2
@DylanMeeus「この正確なテキストを印刷する必要があります:」
リーキー修道女

13
@DylanMeeusそれは、繰り返されるコンソール出力を隠すdevツールに関するものであり、JavaScriptコンソール全体としてはネイティブではなく、JavaScript仕様にも含まれていません-また、機能をオフにできるという事実もあると思います許容できるはずです。すべてのブラウザがそのように折りたたむわけではありません。
Trotski94

6
@LeakyNunリーダーボードスニペットをお願いします!
-dkudriavtsev

2
このチャレンジについて最も興味深いことの1つは、言語によっては**********がループよりも短くなる可能性があることです。特定の言語で1ループまたは2ループを切り替えるほうが良いのではないかと思います。
ドワナ

1
後続の改行は許容されると言います。主要な改行も受け入れられますか?
アルバートレンショー

回答:




65

Bash + coreutils、19バイト

私は「はい」を使用してBashで何かを繰り返すことを好みます。

yes **********|head

@Neilの提案で2バイト節約しました。ただし、このコマンドを実行しているディレクトリに「。」で始まるファイルが含まれていない場合 あなたは星を囲む必要が点在し*"

Bash + coreutils、21バイト

yes "**********"|head

2
使用する素晴らしいアイデアyes。通常、このようなソリューションには「Bash + coreutils」というラベルを付けます。
マナトワーク

8
偶然にも10行がたまたまデフォルトになっているのは嬉しいことですhead
デジタル外傷

3
現在のディレクトリ内のすべてのファイルが.?で始まる必要があることを要求して、2バイトを保存できますか?
ニール

@ニール、私の答えに対するコメントはありますか?もしそうなら、私はそれを取得しません:)
CousinCocaine

1
yes \**********|headファイルの制限なしに書くこともできます。
フロリアンF

50

Vim、13 8バイト

@Lynnのおかげで5バイト節約

qqi*␛9.o␛q9@q 

10i*␛Y9p

10i*␛10回挿入し、行*Y9pコピーして9回貼り付けます。


8
10i*♥Y9p動作します。
リン

1
それは非常識なviです。
-nbubis

テキストエディターでは、バイトの代わりにキーストロークをカウントできると思います。つまり、<ESC>は短くなります。
アディソン

1
なぜ♥ではなく♥?
CL。

1
私はyy9p自分自身を使用していましたが、キャラクターを保存するために大文字を使用して素晴らしい仕事をしました!
ジョーZ.

49

Pyth、6バイト

VT*T\*

TPythで10で、Vabステートメントb a時間を実行し、\*アスタリスク文字定数、(乗算*)の文字列を整数とは、その文字列をn回繰り返します。Pythの暗黙的な印刷でVは、10行が印刷されます。


40

六角形、 37 35 34 31

10"+}(=${";<$<1}42/.0@_=<>\;>(_

拡張:

   1 0 " +
  } ( = $ {
 " ; < $ < 1
} 4 2 / . 0 @
 _ = < > \ ;
  > ( _ . .
   . . . .

オンラインで試す

基本的には、10から0までカウントダウンする2つのforループがあり、内側のループにアスタリスクを出力し、外側のループに改行を出力します。

説明:

このプログラムは、メモリの初期化、10個のアスタリスクを出力するループ、および改行を出力するループの3つの主要部分で構成されています。改行を出力するループには、アスタリスクを出力するループも含まれています。

まず、コードは完全に線形のメモリ初期化を実行します。コードは次のようになります10"+}42。これにより、近くのエッジのメモリが次のように設定されます。

10 \ / 10
    |
   42

42はアスタリスク文字のASCIIコードであり、2の10がループカウンターとして使用されます。注目すべきは、メモリポインターが現在2の10から離れていることです。したがって、後方に移動すると、10の1つに移動します。

次に、アスタリスク印刷ループを開始します。直線的に、コードは次のようになります;".._(。これにより、アスタリスクが出力され、メモリポインタが後方および左に移動し、最終的にそこの値が減少します。1回の反復後、メモリは次のようになります。

10 \ / 9
    |
   42

次に、ループ条件:bottom-leftmostにヒットします>。私達はちょうど減らさエッジがまだ正であれば、私たちは周りバウンスと実行{42はその後、我々はヒットに戻って私たちを移動するには$、印刷ループの先頭に戻り;、スキップすることによって、<。値がゼロの場合、もう一方のループに進みます。

外側のループは、最近ゼロにされたメモリエッジを10にリセットすることから始まります(これは10コード内で南西に向かっています)。次に、この10文字をASCII文字として印刷します。これは改行です。次に、もう一方のメモリエッジに移動し、それをデクリメントして{(から、大量のnoopsを実行します=${_=。これで、このループを1回繰り返した後、メモリは次のようになります。

 9 \ / 10
    |
   42

今回は、上の図の9を格納するエッジからメモリが外側を向いています。次に<、外側のループのループ条件として機能するを実行します。値がゼロ以外の場合、いくつかのミラーで跳ね返り、"移動する南西の六角形の頂点に入った後、意味のある命令の実行を再開します。これにより、後方に向かって左に移動し、42に再び移動しますが、内側を向いています。次に、=方向が反転し、状態が適切にリセットされて、内側のループが再び開始されます。エッジがゼロに設定されている場合、命令ポインタはプログラムを終了するまで何もしない小さな冒険に進みます。

冒険は、北東を冒険する指示ポインタから始まり、危険な方向の安全を無視します。それは勇気を持って、その方向(/)に合わせてミラーを無視し、トランポリンから勇敢に飛び出します($)完全に同一の別のトランポリンの致命的なtrapを完全に回避します。初期化されていない六角形のエッジの空に目を向けると、ポインターは少しの間ゆがむことなく、2つの空白のエッジを一緒に追加し、現在のエッジを合計に設定します:0(エッジは事前にゼロでしたが、ポインターはこれは非常に重要だと信じています)。エッジはゼロであるため、ポインターは道路の分岐点で左折し、(六角形の)神秘的な森の中を歩きます。そこで、それはそれ自身が混乱していることを発見し、それが開始したのと同じ場所で記憶の中で終わるまで、前後に動きます。問題は、現在のエッジが前回ゼロに設定されたことであるに違いないと考え、ポインターは勇敢に1現在のエッジに。次に、高貴なポインターが別のパスを調査します。現在のエッジはデクリメントされ、ゼロに戻ります!ポインターは、イベントの衝撃的な回転にうっとりし、トラップに戻り、現在のエッジを負のエッジに設定します。激怒して、ポインターは比較的快適な森に戻ろうとしますが、現在のエッジがポジティブではないため、パスが再び移動し、ポインターが洞窟に向かっていることに気付きます。そして洞窟とは、巨大な六角形の虫の口を意味します。無力で、ポインターは死にゆく息で性を呪います。また、プログラムは終了します。


ゴーリー、ポインターを飲み込むことでワームがうまくいったことを願っています。それらは傷つくことがあります。
ジョファン16

3
私が今まで読んだ中で最も興味深い、唯一の、六角形の説明を書いた+1。エッジが減少したとき、私はとても緊張しました!
ジョー

37

Emacs、10 8キーストローク

F3 C-1 0 * ENTER F4 C-9 F4

説明

F3             Starts a macro recording
C-1 0 *        Apply 10 times command '*': prints 10 asterix'
ENTER          Insert new line
F4             Stops the macro record
C-9 F4         Apply 9 times the macro

2つのキーストロークを保存してくれたSeanに感謝C-udigitC-digitます。


9
+1、私は常にテキストエディターの回答に
賛成し

1
C-u1回のキーストロークとしてカウントする場合、の代わりにおよびの代わりにC-1 C-0(またはM-1 M-0)を入力して、2つのストロークを削ることができます。C-u 1 0C-9C-u 9
ショーン

15
+1は、emacsを使用してこれを記述するために苦労しなければならなかったためです。
アディソン

1
代わりに(何も保存していない)行の繰り返しは、マクロ内で行うことができますF3 C-1 0 * ENTER C-1 0 F4
ジョナサン・キャロル

@JonathanCarrollはい、10行以上印刷する場合はバイトを節約します;)
YSC

29

ゼリー、7バイト

”*x⁵Ṅ9¡

どうしたの?

”*x⁵Ṅ9¡  - No arguments
”*       - character literal, *
  x      - multiply (dyadic operation)
   ⁵     - integer literal, 10 (we have now constructed the string '**********')
    Ṅ    - Print & linefeed (monadic operation)
     9   - integer literal, 9
      ¡  - Repeat n times (n is 9 as the first Ṅ is not a repeat)

tryitonlineでテストする


9
私は本当に好きṄ9¡です。
デニス

リストバージョン:”*ẋ⁵Wẋ⁵
エリックアウトゴルファー16年

@EriktheGolfer Y「この正確なテキストを印刷する」ために最後に必要になるだろう
ジョナサンアラン

@JonathanAllanただし、それ自体はリストです。「この正確なテキストを印刷する」ためのものではありませんが、作業したい場合はそれを使用します。
エリックアウトゴルファー16年

26

PowerShell、14 12バイト

,('*'*10)*10

長さのアスタリスクの文字列を構築します 10文字列の乗算を使用して。それを括弧にカプセル化し、それをコンマ演算子にフィードして配列を構築します。配列乗算を使用して、その要素で構成される10要素の配列(アスタリスク文字列の10要素の配列)を作成します。それはパイプラインに残り、出力は暗黙的です(Write-Output配列のデフォルトは改行で区切られているため、それを無料で取得します-明確化のために@Joeyに感謝します)。

古い、14バイト

0..9|%{'*'*10}

完全なプログラム。ループ0への9通過ForEach-Objectループ|%{...}。繰り返しごとに、文字列の乗算を使用してのlength- 10string を作成します*。これらの結果の文字列はパイプラインに残され、最後の出力は暗黙的です(Write-Output配列のデフォルトは改行で区切られているため、明示的に@Joeyに感謝します)。


5
powershellは非常に冗長になるため、気に入っています。しかし、これはエレガントで短いです。
-dwana

まあ、技術的には、配列はを介して渡されることはなくToString、展開され、要素ごとにWrite-Outputに渡されます。配列が文字列に変換されるコンテキストでは、スペースで区切られた要素を取得します。
ジョーイ

@Joey Ah、フェア、それはそれを置くためのより良い方法です。文言を編集します(そして私の回答テンプレート;-))。
AdmBorkBork

1
PowerShellの実装に関与しているため、ここでバイアスがかかる可能性があります。そのため、インタープリターの内部で実際に何が行われているのかを多く学ぶ必要がありました;)
Joey

25

V、7バイト

10é*10Ä

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

答えはできる限り簡単です。

説明:

10      "10 times:
  é*    "insert an asterisk
    10Ä "make 10 copies of the current line

非競合バージョン(5バイト):

10O±*

説明:

10O     " Insert the following on the next ten lines:
   ±    "   10 copies of
    *   "   an asterisk

バグが原因でチャレンジが投稿されたとき、これは機能しませんでした。


順序:éとÄはマルチバイト文字(少なくともutf-8では、ここにあるように)であるため、このプログラムは9バイト長です。
ロブ

6
@rob utf-8でエンコードされているのは、それがブラウザーの動作方法だからです。VはE9C4それぞれ「Latin1」エンコーディングを使用します。
DJMcMayhem

21

クラゲ12 10バイト

2バイトを節約してくれたZgarbに感謝します。

P$'*
 &;10

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

説明

このプログラムは、より一般的な表記法を使用して、次の式を表します。

P( $( &;(10), '* ) )

&;単一の値を取り、2倍の値とのペアを作成するので、&;(10)私たちを提供します[10 10]。次に$、アスタリスクの10x10グリッドを形成する形状変更です。最後にP、配列を「マトリックス形式」で出力します。これは、各文字列を独自の行に出力します。


20

HTMLおよびCSS、104 60バイト

p::after{content:"**********"
<p><p><p><p><p><p><p><p><p><p>

バイトカウントが正しいかどうかはわかりません(<style>CSS のタグをカウントしていないため。HTMLプリプロセッサを使用した場合はHTMLも短縮できますが、それが規則に違反しているかどうかはわかりません。

manatworkとBusiness Catに感謝します。

36バイトのJadeエントリを見る


自己終了/sを省略して、すべてのタグを同じ行に記述することができます。ただし、<p>を追加する必要がある場合でも、タグは短くなるように変更してくださいp{margin:0}
マナトワーク

2
これは有効なcssではありません。閉じ括弧が必要です!
リチャードハミルトン

25
@RichardHamilton有効なcssと作業中のcssは同じものではありません
地下

1
@ClementNermaなぜ誰もがこの後にコードを置く必要があるのですか?
エリックアウトゴルファー

2
あなたは、最後のオフ残すことができ>、私は信じている
12Me21

16

Python 2、 22 21バイト

print('*'*10+'\n')*10

print(("*"*10+'\n')*10)私のために働いた。
ピエピ

6
@piepiだから、Python 2でゴルフをする方が普通は良いのです-を呼び出すときに括弧は必要ありませんprint
shooqie

@shooqie Python2を使用したPython3ソリューションに勝るものはありません。Python2とPython3は異なる言語です。また、Python2ソリューションをPythなどの専門的なゴルフ言語と比較することもありません。
Alfe

16

MATLAB、14バイト

repmat('*',10)

私は、MATLABはこれをテストする必要はありませんので、これは間にスペースがある場合、私はわからないんです*秒。
エリックアウトゴルファー16年

@EriktheGolferは明らかにそうではありません:)
PieCot

matマトリックスを提案しているので、私は尋ねました。
エリックアウトゴルファー16年

2
@EriktheGolferすみません、失礼でした。実際、Matは行列を指しますが、この場合はcharの行列、つまり文字列の配列です(すべての行は文字列のようなものです)。したがって、outuptマトリックスは、同じ行の要素間にスペースを入れずに、行ごとに1行印刷されます。
PieCot

16

APL、9 バイト

これまでに作成されたすべてのAPLで動作します。

10 10'*'

10 10 10行10列

 周期的にRの epeating

'*' 星

TryAPLオンライン!


このソリューションはDyalog固有ではないことに注意してください。GNU APLでも動作します。
Arc676

3
@ Arc676はい。実際、これまでに作成されたすべてのAPLで機能します。
アダム

なんてこった、私はちょうど1より多くのバイトを必要とする...私はほとんど:「形式」トリックであなたを倒す∘.⊢⍨⍕⍨,⍨5
NGN

@ngnそれは素晴らしく恐ろしいことです!
アダム

14

Java 7、63バイト

void f(){for(int i=0;i++<10;)System.out.println("**********");}

キックのためだけに。これを短くするためのトリックを見つけることができないようです。100ループのロジックを追加しようとしたり、印刷する代わりに文字列を返したりすると、さらに悪化します。


1
iクラス変数として宣言すると、1バイトずつ削ることができます(デフォルトは0):int i;void f(){for(;i++<10;)System.out.println("**********");}
shooqie

1
関数のどこかでやらない限り、再利用性が壊れてしまいi=0、節約は無効になります。
ジオビット

3
+1これが最短であるというのは確かに正しいようです。再帰は65バイトですint i=10;void f(){System.out.println("**********");if(i-->0)g();}。1つずつ再帰は67バイトですint i=99;void f(){System.out.print(i%10<1?"*\n":"*");if(i-->0)g();}。文字配列での文字列コンストラクターの使用は82バイトですvoid g(){System.out.print(new String(new char[10]).replace("\0","**********\n"));}。String.formatは81バイトですvoid g(){System.out.print(String.format("%010d",0).replace("0","**********\n"));}。ああ、私たちは試しました。;)
ケビンクルーイッセン

2
しかし、クラス宣言自体を追加することなくカウントされますか?これを行うことができる最短のjava7フルプログラムは何ですか?
-jsbueno

1
importステートメントをカウントする必要があるため、ここでは節約のために機能しません。
ジオビット

14

ルビー、15文字

puts [?**10]*10

サンプル実行:

bash-4.3$ ruby -e 'puts [?**10]*10'
**********
**********
**********
**********
**********
**********
**********
**********
**********
**********

説明できます?**10か?それは確かに10個のアスタリスクの文字列を作成しますが、私はどのように
...-erich2k8

3
?そう、文字リテラルの表記です?* == '*'。第二は、*あるString.*方法そう、?**10 == '*'.*(10)
マナトワーク

?何が文字通り表記されているのかまだ理解できないのではないかと思いますが、おそらくいくつかの質問には答えていない方が良いでしょう。;)
erich2k8

申し訳ありませんが、これに関するリファレンスは見つかりません。ことができますRubyの構文、単に様々な文字列リテラル表記:文字列が長い1つの文字である場合に1を加えた?の閉鎖ペア要求することなく、文字が続くマーク?マークが。
マナトワーク

1
私はここのリファレンスでそれを見つけました:ruby-doc.org/core-2.3.0/doc/syntax/literals_rdoc.html There is also a character literal notation to represent single character strings, which syntax is a question mark (?) followed by a single character or escape sequence that corresponds to a single codepoint in the script encoding:
erich2k8

13

メモ帳、34 31キーストローク

**********
^A^C↓^V^A^C↓^V^V^V^V

^はCtrl- <次の文字>キーを押し、↑↓はそれぞれ上下キーを示します。

3つのキーストロークを暗号化するための小道具。


2
これを数えるにはキーストロークを使用する必要があります。
リーキー修道女

1
それはShift + Upです。Ctrl + Upは別のものです。
ニール

1
31キーストローク**********↵^A^C↓^V^A^C↓^V^V^V^V
暗号

1
26キーストローク*****^A^C^V^V↵^A^C^V^A^C^V^V^V^V^V
アンディ

5
23キーストローク**^A^C^V^V^V^V^V↵^A^C^V^V^A^C^V^V^V^V^V
アンディ

13

絵文字コード、54バイト

🏁🍇🔂i⏩0 10🍇😀🔤**********🔤🍉🍉

説明:

🏁🍇                        👴 The beginning of program.
    🔂 i ⏩ 0 10 🍇          👵 This is called a "range".
                          It basically starts with i=0 and increments until i=10, then exits. 👵
        😀 🔤**********🔤    👵 😀 is printing class.
                          The 🔤s make the characters they surround string literals. 👵
    🍉                     👴 End of range
🍉                         👴 End of program

2
54 utf-8バイトをカウントします。
コナーオブライエン

この言語は... Windows 7の嫌い
ジョン・ドヴォルザーク


10

R、 27 29バイト

cat(rep('\r**********\n',10))

別の回答(34バイト)は次のとおりです。 cat(rep('**********',10),sep='\n')


これにより、最初の行を除くすべての行の先頭に余分なスペースが追加されます(こちらを参照)。
プランナパス

おかげで、それが追加され\rます。
マミー

1
別の代替、多すぎる(37)バイト:cat(matrix('*',10,10),fill=10,sep='') rフィドル
ジョナサンキャロル

別の代替手段、29バイト:write(rep("*",100),"",10,,"")
ジュゼッペ

1
またwrite(rep("**",50),1,5,,"")、27バイトであり、最初のキャリッジリターンを回避します。
J.Doe

9

PHP、32バイト

for(;$i++<10;)echo"**********
";

(バリアント32バイト-で書き込まれましたecho

<?=str_repeat("**********
",10);

(バリアント33バイト)

<?=str_pad("",110,"**********
");

(バリアント33バイト)

for(;$i++<110;)echo$i%11?"*":"
";

(バリアント35バイト)

for(;$i++<10;)printf("%'*10s
",'');

(バリアント38バイト)

<?=($a=str_repeat)($a("*",10)."
",10);

3
もう一つはgolfedにすることができる32バイトならびに:<?=str_repeat("**********↵",10);
insertusernamehere

1
すでに素晴らしい選択肢のコレクションがあるecho chunk_split(str_repeat("*",100),10);ので、楽しみのために別のものがあります。これまでで一番長いです。私のビジョンではこれがPHPの方法です。
マナトワーク

WIN-1252エンコードでは1バイト短くすることができます:for(;++$i<111;)echo$i%11?~Õ:~õ;またはfor(;++$i<11;)echo~ÕÕÕÕÕÕÕÕÕÕõ;
16

33バイトの別のモジュロバリアント:for(;$i++<110;)echo"*↵"[$i%11<1];。そして、そのコレクションに37バイトのソリューションを追加するには:for(;$i++<110;)echo chr($i%11?42:10);
タイタス


8

Brainfuck、46 43バイト

+[[---<]+[-->]<]<<[--<<++..........-->>>.<]

オンラインでお試しください!左側が開いており、8ビットのセルがあるテープを備えたインタープリターが必要です。

このプログラムの最初の部分では+[[---<]+[-->]<]、テープを次のようにセットアップします。

[255, 250, 245, ... 15, 10, 5, 0, 250, 240, 230, ..., 40, 30, 20, 10, 0]
                                                                      ^

これにより、アスタリスクを出力するための40(*、ASCII 42)、ループカウンターとして使用する20、および改行を出力するために使用する10が得られます。


7

JavaScript(ES6)、37バイト

console.log(`**********
`.repeat(10))

簡単な答え。


5
を使用して6を保存できalertませんか?
ケビンL

1
おそらく、タイトルconsole.log()を削除して指定することREPLで13バイト節約できます。
パトリックロバーツ


6

Haskell、29バイト

putStr$[0..9]>>"**********\n"

<list1> >> <list2>(length <list1>)コピーを作成し<list2>ます。


6

R、35 33 32バイト

ÔR、あなたは時々とても冗長です。

for(i in 1:10)cat(rep("*",10),"\n")

おもしろいことに、このcat関数には値がありません(NULLSTDOUT に提供されます)rep(cat(rep)))

編集:
@LeakyNunによって提案された新しいソリューション、-2バイト。

for(i in 1:10)cat("**********\n")

編集: @ user5957401によって 、-1バイトだけ短くする

for(i in 0:9)cat("**********\n")

3
for(i in 1:10)"**********\n"
リーキー修道女

1
@LeakyNun:シンプルさが鍵です!私が持っていたcatそれ以外の場合は何も発生しない、それにもかかわらず。
フレデリック

cat(rep("**********\n",10))
リーキー修道女

@LeakyNun目的の出力は生成されません。こちらを参照してください。デフォルトの区切り文字catはスペースであるため、この出力になります。
プランナパス

5

網膜、12バイト

バイトカウントはISO 8859-1エンコーディングを前提としています。主要な改行は重要です。


10$**
.
$_¶

最初の段階では10個のアスタリスクの文字列を書き込み、2番目の段階では各アスタリスクを文字列全体と改行で置き換えます。これにより、2つの末尾の改行が印刷されます。


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