アルファベットの三角形


48

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

A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A

スペック

  • 出力の最後に余分な末尾の改行を使用できます。
  • 追加の末尾の改行を含め、各行の末尾に追加の末尾スペース(U + 0020)を使用できます。
  • すべて大文字の代わりにすべて小文字を使用できますが、部分的に小文字を部分的に大文字で印刷することはできません。
  • テキストを完全なプログラムで印刷する代わりに、関数出力として返すことができます。

得点

これは三角形であり、三角形には3つの辺があり、3は小さい数であるため、コードはバイトカウントの観点から小さくする必要があります。


22
最近非常に多くのアルファベット
downrep_nation

1
私の共感覚は暴走している、@ downrep_nation
DoctorHeckle

5
「三角形には3つの辺があり、3は小さい数なので、コードはバイト数の点で小さくなければなりません。」合法的なようだ
ロハンJhunjhunwala

1
唯一の1で構成される数字の正方形は関連すると思われる:1 * 1 = 1〜= A、11 * 11 = 121〜= ABA、111 * 111 = 12321〜= ABCBA ...
Caridorc

1
「三角形には3つの側面があり、...」Illuminatiが確認した。
ハイパーニュートリノ

回答:


38

Vim、37バイト

:h<_↵↵↵YZZPP$xqqxYpGP√2G$A♥-€k$q24@qJ

ここに画像の説明を入力してください

伝説

↵ = Return
√ = Ctrl+V
♥ = Ctrl+R
€ = Escape

2
それは本当にクールなGIFです。
AdmBorkBork

13
Vimの回答に驚かされることはありません。
DanTheMan

Vimに堪能でない人にとって、これがどのように機能するのかを説明してください。
R. Kap

6
@ R.Kap Vimをダウンロードして、自分で解決策を試してみることをお勧めします。解決策がストロークごとに展開するのを見ることができます。基本的に、ヘルプファイル(:h<_↵↵↵YZZP)からアルファベットを盗み、マクロを記録して(qq…q)繰り返して最上行から文字を切り取り、そのコピーを2つ作成して三角形を垂直方向に拡大し、切り取られた文字をすべての行に追加します水平に成長させます。このマクロをさらに24回繰り返して、完全な三角形を描画します。
リン

31

ロゴ、232207196190バイト

誰かが三角形を言いましたか?

コンパスと分度器を取り出して、これをグラフィカルに行いましょう。ジオメトリは正三角形を使用して結果を揃えます。以前は二等辺三角形がありましたが、小数点以下が多すぎました。また、この変更により出力が圧縮され、画面準備とフォント変更の量が削減されました。

Calormenオンラインインタープリターを使用して、これを具体化しました。画面のスペースが足りない場合は折り返しますが、いくつかの数値をいじってそれを処理することもできます。ブラウザで「F11」フルスクリーンモードを使用しました。

ht
pu
to r:n:b:l repeat:n[rt:b label char 90-:n lt:b fd:l] end
to t:s
fd 12 rt 120 bk 6
repeat 2[r:s 90 12]
repeat 2[rt 120 r:s 90-heading 24]
end
rt 90 label "Z lt 210
repeat 25[t repcount]

r手順は、のライン描画n文字を。文字は、使用するように指示されているセグメントの数に応じて自動的に決定されます。bパラメータは、どのくらいの文字が右方向に向いているので、一時的に回転させるためにそれを伝えます。このlパラメーターは、文字間の直線距離を決定します。

t手順の次の位置までのステップとを呼び出しrたときに適切な回転、三角形を作成する機能を4回。特別な処理で1回呼び出すよりもバイト数が少ないため、垂直側で2回呼び出しました。手順の終了は、次の三角形の開始のためにカメを配置します。

Z特殊なケースですので、それを直接印刷して、ちょうど三角形を完成したかのように回転させます。最後に、t25回呼び出されます。

進行中の注釈付き画像完成した結果


3
箱から出してすぐに。よくできました。
いとこコカイン

19

Haskell、58バイト

f x=init x++reverse x
t=unlines$f[f['A'..c]|c<-['A'..'Z']]

t出力を文字列として返す関数を定義します。

f x=               define a helper function
init x             take the argument minus its last element
++                 and concatenate it with
reverse x          the argument reversed, producing ex. [a,b,c,b,a] from [a,b,c]

t=                                    define the main function
           [         |c<-['A'..'Z']]  for every char c from 'A' to 'Z'...
             ['A'..c]                 generate the range from 'A' to c
            f                         call the helper function to "reflect" it
          f                           call the helper function on the entire list
  unlines$                            join on newlines

12

ゼリー16 13 バイト

Ṗ;Ṛ
ØAḣJÇ€Çj⁷

3バイトのゴルフをしてくれた@LeakyNunに感謝します!

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

使い方

Ṗ;Ṛ        Helper link. Argument: A (array)

Ṗ          Pop; yield A without its last element.
  Ṛ        Reversed; yield A with inverted order.
 ;         Concatenate the results to both sides.


ØAḣJÇ€Çj⁷  Main link. No arguments.

ØA         Alphabet; set link argument and return value to "A...Z".
   J       Indices; yield [1, ..., 26].
  ḣ        Head; take the first, the first two, etc. elements of the alphabet.
           This yields ["A", AB", ..., "A...Z"].
    ǀ     Apply the helper link to each string.
      Ç    Apply the helper link to the array itself.
       j⁷  Join, separating by linefeeds.


@LeakyNunありがとう。
デニス

4
世界でこれがどのように機能するのか知りたいのですが…
ソクラティックフェニックス

リンクデュプリケーターを使用すると、1バイトを節約できる場合があります
Leaky Nun

3
@MathieuRodic Jellyは、それぞれが1バイトとして認識する256文字すべてをエンコードするカスタムコードページを使用します。ヘッダーのバイトリンクはそれを指します。
デニス

10

Python、74バイト

def f(x=66,s='A'):
 t=s+s[-2::-1];print t
 if x<91:f(x+1,s+chr(x));print t

引数を出力せずに取得するPython 2関数。重要なアイデアは、再帰を使用して三角形の往復パターンを生成することです。最初に、文字「A」を「Z」まで印刷し、「A」まで印刷するこの単純な関数を考えます。

def f(x=65):
 t=chr(x);print t
 if x<90:f(x+1);print t 

この関数は、最初に「A」(文字コード65)を印刷し、次に「B」(66)を印刷するために再帰して「Z」(90)に印刷します。そこから、再帰を停止します。再帰スタックをポップダウンする途中tで、同じレイヤーで印刷されたすべての文字(「Y」から「A」まで)を印刷します。

メインコードは、sこれまでの文字列に蓄積され、上下の文字列を出力することを除いて、同じことを行いますs+s[-2::-1]

2バイトのxsotに感謝します。

Python 3では、同じことはすべてを1行に置くことで1バイト短くなります(73バイト)。

def f(x=66,s='A'):t=s+s[-2::-1];print(t);x>90or[f(x+1,s+chr(x)),print(t)]

変数をオフセットすると、2バイト節約できますf(x=66,s='A')。これによりs、関数本体の代わりに関数呼び出しで更新できます。
-xsot

Python 3のバージョンは、Python 2の相対バージョンと同様に、Zに戻って戻る最も長い行を得るために、89ではなく90の値を必要とすると思います。
テベ

@Tebbeありがとう、修正しました。
-xnor

8

brainfuck、1733の 121 119バイト

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

少し読みやすいバージョン:

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

説明が来る可能性があります。


各キャラクターを手動で作成する代わりに、ループを使用してみてください。
リーキー修道女

@LeakyNunそれをどうやってやるのかわからない。助言がありますか?
DanTheMan

4
よかったので、4時間だけ寝ました。
リーキー修道女

1
プログラムを出力より小さくしたことをおめでとうございます!
GuitarPicker

1
1612バイトのゴルフはどのように行われますか?
FantaC

8

05AB1E20 13 12 6バイト

Adnanのおかげで2バイト節約されました。Magic Octopus Urnといくつかの新しい言語機能の
おかげで6バイト節約されました。

Aη€ûû»

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

説明

Aη       # push prefixes of alphabet
  €û     # palendromize each prefix
    û    # palendromize the whole list
     »   # join on newlines

非常に素晴らしい!あなたは変更することができますŒ26£.pprefixコマンドです。また、あなたは変更することができますD,=ポッピングなしで印刷され、。
アドナン

うわー、と巧妙なトリックgF,
アドナン

@アドナン:ありがとう!私はどこかにprefixコマンドがあることを知っていました:)拡張されたものをチェックすることはめったにありません。
エミグナ

2
その分岐コマンドÂは非常に素晴らしく、本当にすてきな機能です。
マイル

1
@carusocomputing:残念ながらûチャレンジよりも新しく、この答えは競合しません。
エミグナ

6

J、26 23 22バイト

f(f=:,1}.|.)\u:65+i.26

説明

,1}.|.  Monad f: Input: A
    |.  Reverse the items in A
 1}.    Drop the first item in the reversed A
,       Join A and the previous

f(f=:,1}.|.)\u:65+i.26
                  i.26  Create the range [0, 1, ..., 25]
               65+      Add 65 to each
             u:         Convert to characters to get 'A..Z'
  f=:,1}.|.             Define a verb f
 (         )\           Call f monadically on each prefix of 'A..Z'
f                       Call f again on that result

f=:,1}.|.これを試してください
リーキー修道女

@LeakyNunありがとう、なぜ違うと思ったのか分からない。
マイル




5

C、272 247 234 230 144 137バイト。

sigalorからの素晴らしいゴルフのヒントとトリックのおかげで、以前の方法で多くのバイト(272 -> 230)を節約しました

より良い方法に切り替えることで、ほぼ100バイト(230 -> 144)節約されました。

main(q,i,e,x){for(q=0;q<51;q++){i=q>25 ? 25-(q-25):q;for(e=65;e<66+i;e++)printf("%c",e);for(x=64+i;x>64;x--)printf("%c",x);printf("\n");}}

私の最初の答えはC。最近、自己学習を始めたばかりなので、どうなるか見てみましょう。

アクションでそれを!(イデオン)


1
ああ、私もCの答えを追加したかっただけです...とにかく、私はあなたを助けます;)最初に、これはコードゴルフです。完璧なコードを書く必要はありません。コンパイラの警告はまったく問題ありません。だからこそ、のmain()戻り値の型、さらにはを削除できるの#include <stdio.h>です。GCC(およびIdeoneなどのサイト)もこれで問題ありません。次に、変数定義を関数のパラメーターリストに「アウトソース」できます。にfor(int i=65;...なりfor(i=65...、に変更main()しましょうmain(i)。他のすべてのint変数についても同じことを行います(GCCは欠落している型をにデフォルト設定しますint)。
sigalor

@sigalorヒントをありがとう!:) 1つの質問:に変更main()する必要があるのはなぜmain(i)ですか?
R. Kap

@sigalor実際、今では多くのコンパイルエラーが発生しています。
R.ガプス

iforループの初期化で変数を宣言しない場合は、別の場所で宣言する必要があります。(少なくともCでは)関数のパラメーターは通常の変数のように使用できるため、問題はないはずです。ところで、どのコンパイラを使用していますか?
sigalor

@sigalor現在イデオネにいCます。いくつかの<variable> undeclaredエラーが発生します。
R. Kap

5

JavaScript(ES6)、81バイト

[...'ZYXWVUTSRQPONMLKJIHGFEDCBA'].reduce((p,c)=>c+`
`+p.replace(/^|$/gm,c)+`
`+c)

5

Mathematica 59バイト

Column@FromCharacterCode[#@#@26+64]&[#-Abs@Range[1-#,#-1]&]

//Column末尾から削除し、コードにプレフィックスを付けるとColumn@うまくいくと思います。
Yytsi

2
あなたはカウントされているように見えるシングルバイトとして。それらがあり、Mathematicaですぐにサポートされるシングルバイトのコードページがあることを疑います。UTF-8では3バイト単位であるため、plainを介して実際には何も保存しません[[...]]。またColumn、Mathematicaノートブックの行のリストのようにしか表示されないため、合法であるかどうかもわかりません。スクリプトファイルからこのコードを実行しても、何も表示されません。ただし、Print/@バイト数は同じで、どちらの場合でも機能します。
マーティンエンダー

長いアドレスを持つページへのリンクを作成する場合は、次を実行できます[what you see](actual link)。例 [Example Link](https://www.example.com)リンク例
スタンストラム


4

R、63 61 59バイト

for(i in c(1:26,25:1))cat(LETTERS[c(1:i,i:1-1)],"
",sep="")

助けになるとLETTTERS[0]、文字は返されません。

編集:@leakynunに感謝

編集:@plannapusへの2つの感謝


1
代わりにリテラルの改行を使用できます\n
Leaky Nun

3

TSQL、159バイト

DECLARE @ varchar(52)='ABCDEFGHIJKLMNOPQRSTUVWXY',@o varchar(max)SELECT @+='Z'+REVERSE(@)+'
',@o=@
WHILE''<@
SELECT @=STUFF(@,LEN(@)/2,2,''),@o=@+@o+@
PRINT @o

フィドル


1
私はそれをやろうとしましたが、250バイト以上になるので、決して投稿しませんでした。実際、あなたは私のものよりも良い解決策を持っています。もう一度:)
アヌジトリパティ

3

Javascript(外部ライブラリ列挙可能を使用)、135バイト

_.Range(1,51).WriteLine(x=>(g=_.Range(65,x>25?52-x:x)).Write("",y=>(w=String.fromCharCode)(y))+(g.Reverse().Skip(1).Write("",y=>w(y))))

ライブラリへのリンク:https : //github.com/mvegh1/Enumerable

コードの説明:1から始まるintの範囲を51カウントで作成します。それぞれについて、complex predに従って行を記述します。グローバル変数とキャッシングを使用して、JSウィザードを実行します。WriteLineの各intについて、左側のintの範囲を作成してグローバル「g」に格納し、""デリミタを使用した文字列結合(書き込み)および各intをint charコードへの文字列マッピングにマッピングします。次に、そのシーケンスの反転を取り(元の順序の最後の要素と一致するため、最初の要素をスキップして...)、同じロジックで記述して右側を連結します。編集:ライブラリの書き込みの内部を更新しました。空のシーケンスは、nullではなく空の文字列を書き込むようになりました。これにより、回答から15バイト削り取られました

ここに画像の説明を入力してください


1
ライブラリをインポートするために必要なバイトを含める必要はありませんか?
マシューロック

1
Idk、Iveはライブラリを使用して20を超える回答を投稿しました。私の答えはとにかく勝てないので、誰もが本当に気にかけているとは思わない
-applejacks01

1
@ applejacks01インポートしない場合、一番上で「JS + Enumerable」のようなことを言う必要があります。「Bash + Coreutils」と同様
-mbomb007

2
インポートをカウントすることは一般的です。Python + SymPyの回答は、まだimport sympyまたはfrom sympy import*一番上にあります。バッシュ+ Xだけインストールする必要があるため答えが異なっているのxを、何とかそれを有効にしません。
デニス

1
@PatrickRobertsチャレンジが投稿される前にライブラリが存在する限り、はい。Pythonの答えは使用しますsympynumpyscipy、などのすべての時間を。
デニス

3

Powershell、61 52バイト

9バイトを節約してくれたTimmyDに感謝します!

65..90+89..65|%{-join[char[]]((65..$_-ne$_)+$_..65)}

大文字のASCII値を順方向にループし、逆方向にループします。これは、各番号について、最初のX番号の配列を作成し、X-1番目の番号を削除してから、最初のX番号の逆を追加します。


ねえ、それは良い、ありがとう!私は65..90..65以前に気まぐれに接続しましたが、成功しませんでした。範囲を一緒に追加できることを忘れていたと思います。
ベンオーウェン

3

チェダー102 96 79 69 67バイト

Downgoatのおかげで17バイト、さらに10バイトのインスピレーション。

"A"+(2@"27+@"(25|>1)).bytes.map(i->65@"(64+i)+@"((64+i)|>65)).vfuse

文字列は連結できるが配列はできないという事実は、2つの範囲を文字列に変換し、連結してから配列に戻す必要があることを意味します。

また、vfuse主要なnewliens を生成するという事実は、最初の行を手動で生成し、残りの行に連結する必要があることを意味します。

@" ダイアド(2引数関数)は文字列に直接変換できますが、逆の範囲では機能しません(最初の引数が2番目の引数よりも大きい場合)。

範囲は半分でした。バグ修正後、包括的になりました。

使用法

cheddar> "A"+(2@"27+@"(25|>1)).bytes.map(i->(65@"(64+i)+@"((64+i)|>65))).vfuse
"A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A"

チェダー、55バイト(非競合)

では、最新バージョンのすべての修正と、答えは次のとおりです。

(|>25+24|>0).map(i->65@"(65+i)+(i?(64+i)@"65:"")).vfuse

しかし、それは挑戦の後に作られました。


@"(1|>26)することができます1@"26
-Downgoat

String.lettersすることができます(65@"91)
Downgoat

String.letters.slice(0,i)多分65@"(66+i)
Downgoat

なるほど、私はあなたがしてきた参照格子あなた:バイトを。
-steenbergh


3

VBA、94バイト

Function T:For j=-25To 25:k=25-Abs(j):For i=-k To k:T=T &Chr(65+k-Abs(i)):Next:T=T &vbLf:Next

?Tを使用してイミディエイトウィンドウで呼び出します。

何が起こっているのかを説明するために、Abs関数を2回使用して、アルファベットのトラバースと行の長さの両方を反映しています。どちらの場合も、Abs変換前の変数のゼロクロスに対応する単一の極値があるため、タスクに適しています。

プログラムや関数ではなく、VBAイミディエイトウィンドウの単純なコマンドセットとして、次のコマンドには72バイトが必要です。

For j=-25To 25:k=25-Abs(j):For i=-k To k:?Chr(65+k-Abs(i));:Next:?:Next

(@GuitarPickerのおかげで)


1
アイスランドの旗の提出の1つで、いくつかの同様のロジックを使用しました。イミディエイトウィンドウで完全に実行し、関数宣言をスキップして、これをさらにゴルフすることはできませんか?
GuitarPicker

@GuitarPicker; イミディエイトウィンドウでの実行が完全なプログラムとしてカウントされるかどうかはわかりませんが、そうであれば8バイト少なくなります。で始まるのでFunction T:はなく、で終わります:?T(ただし、Tを ""にリセットする必要があるため、1
回し

2
?一緒に行けばTも必要ありません;
GuitarPicker

私はその方法を使って71までそれを剃ることができました。ヒント:vbCrLfも必要ありません。
GuitarPicker

1
ええ、私も同じです。返品が必要です。
ジョファン

3

Python、73 71バイト

再帰について@xnorに感謝

f=lambda x=66,s='A',t='':x/92*t or t+f(x+1,s+chr(x),s+s[-2::-1]+"\n")+t

説明

  • パラメータ
    • x アルファベットの次の文字のASCII値です
    • s アルファベットのアキュムレータです
    • t三角形の線(つまりs+ s backwards
  • Returntアルファベットが完成した場合(つまり、中心にいる場合)
  • その他t+f(...)+twith:
    • x 増加した
    • s 次の文字を追加
    • ts+ s backwards+にリセット\n

更新

  • -2 [16-08-05]先行\n(+1)および短縮された条件(-3)をすべて@xnorのおかげで削除

1
t次のループにプッシュスルーするなんて賢い方法です。ただし、追加の主要な改行があります。x=66,s='A''それを取り除きます。ベースケースはに短縮できますx/92*t or
-xnor

3

HTML + CSS、884文字

(763文字のHTML + 121文字のCSS)

MonkeyZeus答えに対するLeaky Nunコメントを拡大するだけです。(コメントを読み間違えるかもしれませんが…)

p{margin:0}p:before{content:"ABCDEFGH"}p:after{content:"HGFEDCBA"}a:before{content:"IJKLMNOP"}a:after{content:"PONMLKJI"}
<pre>A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
<p>I</p><p>IJI</p><p>IJKJI</p><p>IJKLKJI</p><p>IJKLMLKJI</p><p>IJKLMNMLKJI</p><p>IJKLMNONMLKJI</p><p>IJKLMNOPONMLKJI</p><p><a>Q</p><p><a>QRQ</p><p><a>QRSRQ</p><p><a>QRSTSRQ</p><p><a>QRSTUTSRQ</p><p><a>QRSTUVUTSRQ</p><p><a>QRSTUVWVUTSRQ</p><p><a>QRSTUVWXWVUTSRQ</p><p><a>QRSTUVWXYXWVUTSRQ</p><p><a>QRSTUVWXYZYXWVUTSRQ</p><p><a>QRSTUVWXYXWVUTSRQ</p><p><a>QRSTUVWXWVUTSRQ</p><p><a>QRSTUVWVUTSRQ</p><p><a>QRSTUVUTSRQ</p><p><a>QRSTUTSRQ</p><p><a>QRSTSRQ</p><p><a>QRSRQ</p><p><a>QRQ</p><p><a>Q</a></p><p>IJKLMNOPONMLKJI</p><p>IJKLMNONMLKJI</p><p>IJKLMNMLKJI</p><p>IJKLMLKJI</p><p>IJKLKJI</p><p>IJKJI</p><p>IJI</p><p>I</p>ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A


3

Brachylog37 29バイト

全体を通して彼の支援に対してFatalizeの功績。

Fatalizeのおかげで4バイト、さらに4バイトのインスピレーション。

@A:1&e:"a"yr:1&cw@Nw\
:Lc.r.!

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

述語0(メイン述語)

@A:1&e:"a"yr:1&cw@Nw\
@A:1&                  Apply predicate 1 to @A, which is
                       basically "abcdefghijklmnopqrstuvwxyz"
     e                 Choose one element from the result (choice point)
      :"a"yr               generate substring from element to "a"
            :1&            apply predicate 1
               c           concatenate
                w          write to STDOUT
                 @Nw       write "\n" to STDOUT
                    \  Backtrack to last choice point to choose
                       another element until there is no more
                       choice left, then halt.

述語1(補助述語)

これは基本的に、指定された文字列から回文を構築します。

:Lc.r.!
:Lc.     output is [input:L]
   .r.   output reversed is still output
      !  stop searching after the first output

,A述部1をhで置き換えて、1バイト節約できます。
16

することもできます置き換えることにより、2バイトの保存:1:2yt.:2&.し、追加!述語2の終わりに(カット選択ポイント)
Fatalize


3

R、127125バイト

k=cat;L=LETTERS;for(i in 1:26)k(c(L[1:i],L[(i-1):0],"\n"));for(i in 1:26)k(c(L[0:(26-i)],L[ifelse((25-i)>=0,25-i,0):0],"\n"))

このソリューション、特に2つのforループに完全に満足しているわけではありませんが、これ以上優れたものはありません!
LETTERS大文字が含まれています。

アンゴルフド:

for(i in 1:26){
  cat(c(LETTERS[1:i],LETTERS[(i-1):0],"\n"))
               }

for(i in 1:26){
  cat(c(LETTERS[0:(26-i)],LETTERS[ifelse((25-i)>=0,25-i,0):0],"\n"))
               }

ifelseunsingのより短い方法でありif... else...、このように動作します:ifelse(condition,action if TRUE, action if FALSE)

他の125バイトのソリューション:

for(i in 1:26)(k=cat)(c((L=LETTERS)[1:i],L[(i-1):0],"\n"));for(i in 1:26)k(c(L[0:(26-i)],L[ifelse((25-i)>=0,25-i,0):0],"\n"))


3

Java 131バイト

文字列を使用しない場合(131バイト)

public static void main(String[] args) {
    for(int i = 0 ,k=1; i>-1; i+=k){
        for(int c= 65, d = 1; c>64;){
            d = d>-1 & c < 65+i?1:-1;
            System.out.print((char)c+((c+=d)<65?"\n":""));
        }
        k = k>-1 & i < 25?1:-1;
    }
}

Codegolfed

for(int i=0,k=1;i>-1;k=k>-1&i<25?1:-1,i+=k)for(int c=65,d=1;c>64;d=d>-1&c<65+i?1:-1,System.out.print((char)c+((c+=d)<65?"\n":"")));

文字列あり(173バイト)

String a="abcdefghijklmnopqrstuvwxyz";
for(int i = 1 ,k=1; i>0; i+=k==1?1:-1){
    System.out.println(a.substring(0,i)+new StringBuilder(a).reverse().substring(27-i));
    k = k>-1 & i < 26?1:-1;
}

Codegolfed

String a="abcdefghijklmnopqrstuvwxyz";for(int i=1,k=1;i>0;k=k>-1&i<26?1:-1,System.out.println(a.substring(0,i)+new StringBuilder(a).reverse().substring(27-i)),i+=k==1?1:-1);

おかげmanatworkケビンCruijssen


2
PPCGへようこそ。「コードゴルフにどのように答えればよいですか?」をお読みください。code-golfタグの情報ページのセクション。この種の課題への回答は、コードサイズを削減する努力を示すものと期待されています。これであなたは、のヘルプを見つけることが、Javaでゴルフをするためのヒント<すべての言語>でのゴルフのためのヒントを
マナトワーク

1
そこで4つの三項演算子を使用し、すべての条件を括弧で囲みます。これらを削除して、8文字を保存できます。
マナトワーク

1
dとkは-1を下回ることはできませんか?そして、あなたは置き換えることができd!=-1d>-1、kに対して同じことを。(ところで、ゴルフバージョンを修正するのを忘れていました。)
manatwork

ループ本体から3つのバイトを保存する増分ステートメントセクションに移動文...
Syamesh K

1
こんにちは、私はそれはかなりしばらくしている知っている、しかし、あなたはゴルフ二つのことができます。i+=k==1?1:-1することができi+=kかつSystem.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);可能System.out.print((char)c+((c+=d)<65?"\n":"")));。合計で(131バイト)になりますfor(int i=0,k=1;i>-1;k=k>-1&i<25?1:-1,i+=k)for(int c=65,d=1;c>64;d=d>-1&c<65+i?1:-1,System.out.print((char)c+((c+=d)<65?"\n":"")));
ケビンクルーッセン


2

Sesos、27バイト

0000000: a85ab9 ac5daa f8b1c7 785f9b b961f7 665c1b 73ccfc  .Z..]....x_..a.f\.s..
0000015: c01ecb 987303                                     ....s.

オンラインでお試しください!デバッグをチェックして、生成されたSBINコードを確認します。

Sesosアセンブリ

上記のバイナリファイルは、次のSASMコードをアセンブルして生成されています。

add 65, rwd 1, add 10, rwd 2, add 25
jmp
    fwd 3
    jmp
        put, fwd 1
    jnz
    rwd 1
    jmp
        fwd 1, add 1, fwd 1, add 1, rwd 2, sub 1
    jnz
    fwd 2
    jmp
        rwd 2, add 1, fwd 2, sub 1
    jnz
    rwd 1, add 1, rwd 2
    jmp
        put, rwd 1
    jnz
    rwd 1, sub 1
jnz
fwd 3
jmp
    jmp
        put, fwd 1
    jnz
    rwd 1, get, rwd 1
    jmp
        put, rwd 1
    jnz
    fwd 2
; jnz (implicit)

2

///、208バイト

/'/\/\///+/BA
AB'-/DC+CD'&/FE-EF')/HG&GH'=/JI)IJ'|/LK=KL'7/NM|MN'1/PO7OP'q/RQ1QR'p/TSqST'6/VUpUV'[/XW6WX/A
A+C+C-E-E&G&G)I)I=K=K|M|M7O7O1Q1QqSqSpUpU6W6W[Y[YZY[Y[W6W6UpUpSqSqQ1Q1O7O7M|M|K=K=I)I)G&G&E-E-C+C+A
A

もちろん勝っていないが、ここではマーティン・エンダーに先んじて...

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