Alfabe üçgeni


48

Bu tam metni basacaksınız:

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

gözlük

  • Çıktı sonunda ekstra izleyen yeni satırlara izin verilir.
  • İlave takip eden yeni satırlar dahil, her satırın sonunda ilave takip alanlarına (U + 0020) izin verilir.
  • Tüm büyük harf yerine küçük harf kullanabilirsiniz, ancak kısmen küçük harf kısmen büyük harf yazdıramazsınız.
  • Metni, tam programda yazdırmak yerine işlev çıktısı olarak geri getirebilirsiniz.

puanlama

Bu bir üçgen olduğundan ve bir üçgenin 3 tarafı olduğundan ve 3 küçük bir sayı olduğundan, kodunuz bayt sayısı bakımından küçük olmalıdır.


22
Son zamanlarda çok sayıda alfabe
downrep_nation 11

1
Sinestezim vahşileşmeye başladı, @ downrep_nation
DoctorHeckle

5
"Üçgenin 3 tarafı olduğundan ve 3'ü küçük bir sayı olduğundan, kodunuz bayt sayısı bakımından küçük olmalıdır." meşru görünüyor
Rohan Jhunjhunwala

1
Yalnızca 1'den oluşan sayıların kareleri ilişkili görünür: 1 * 1 = 1 ~ = A, 11 * 11 = 121 ~ = ABA, 111 * 111 = 12321 ~ = ABCBA ...
Caridorc

1
“Üçgenin 3 tarafı var ve ...” Illuminati Confirmed.
HyperNeutrino,

Yanıtlar:


38

Vim, 37 bayt

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

enter image description here

efsane

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

2
Bu gerçekten harika bir GIF.
AdmBorkBork

13
Vim cevapları ile hayrete düşmekten asla vazgeçmeyeceğim.
DanTheMan

Bunun Vim'de akıcı olmayanlar için nasıl çalıştığını açıklamak ister misiniz?
R. Kap,

6
@ R.Kap Vim'i indirmeni ve çözümü kendin denemeni öneririm - çözümü açmadan inmeyi tek tek izleyebilirsin! Temel olarak, bir yardım dosyasından ( :h<_↵↵↵YZZP) alfabeyi çalıyorum , sonra qq…qbir mektubu üst satırdan sürekli kesen bir makro ( ) kaydediyorum , üçgeni dikey olarak büyütmek için iki kopyasını çıkarıyor, sonra kesilen harfi tüm satırlara ekliyor yatay olarak büyütmek için. Tam üçgeni çizmek için bu makroyu 24 kez daha tekrarlıyorum.
Lynn,

31

Logo, 232 207 196 190 bayt

Biri üçgen mi dedi?

Pusuladan ve iletkiden çık, bunu grafiksel olarak yapalım. Geometri sonuçları hizalamak için eşkenar bir üçgen kullanır. Daha önce ikizkenar üçgen vardı, ancak çok fazla ondalık basamak içeriyordu. Bu değişiklik aynı zamanda çıktıyı sıkıştırdı, ekran hazırlığı miktarını ve yazı tipini değiştirmek zorunda kaldım.

Calormen çevrimiçi tercümanını çıkarmak için kullandım . Yeterli ekran mülkünüz yoksa, orası kapanacak, ancak bununla ilgilenmek için bazı numaralarla uğraşabilirsiniz. Tarayıcımda "F11" tam ekran modunu kullandım.

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]

rProsedür bir çizgi çizer nkarakterler. Kaç segment kullanması gerektiğine bağlı olarak karakter otomatik olarak belirlenir. bParametre geçici olarak harfler doğru yönde gelecek şekilde döndürmek ne kadar bunu söyler. lParametre harfler arasında doğrusal mesafeyi belirler.

tİşlem bir sonraki pozisyona adımları ve aramaları rfonksiyonu dört defa uygun olduğunda döner bir üçgen oluşturmak için kullanılır. Dikey taraf için iki kez aradım, çünkü özel işlemlerde bir kez çağırmaktan daha az bayt aldı. Prosedürün sonu, bir sonraki adımda, bir sonraki üçgenin başlangıcı için kaplumbağayı konumlandırır.

Zbu özel bir durumdur, bu yüzden doğrudan yazdırır ve sanki yeni bir üçgen yapmış gibi döneriz. Sonunda, t25 kez denir.

In progress annotated pictureFinished result


3
Kutudan dışarı. Güzel bitti.
Kuzen Kokain

19

Haskell, 58 bayt

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

tÇıkışı bir dizge olarak döndüren bir işlevi tanımlar .

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

Jöle , 16 13 bayt

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

3 byte kapalı golf için @LeakyNun teşekkürler!

Çevrimiçi deneyin!

Nasıl çalışır

Ṗ;Ṛ        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 Teşekkürler.
Dennis,

4
Bu dünyada nasıl çalıştığını bilmek isterdim ...
Socratic Phoenix

belki bağlantı çoğaltıcısını kullanırsanız bir bayt kurtarabilirsiniz
Leaky Nun

3
@MathieuRodic Jelly, her biri tek bir bayt olarak anladığı tüm 256 karakteri kodlayan özel bir kod sayfası kullanır. Bayt buna başlık noktalarında bağlar.
Dennis,

10

Python, 74 bayt

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

Argüman yazdırmayan ve almayan bir Python 2 işlevi. Ana fikir, yinelemeli üçgen arkaya ve geriye dönük deseni oluşturmaktır. Öncelikle 'A' harfini 'Z' harfine ve aşağı 'A' harfini basan bu basit işlevi düşünün:

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

İşlev önce "A" (karakter 65) yazdırır, ardından "B" (66) vb. "Z" (90) konumuna yazdırır. Oradan, özyinelemeyi durdurur. Özyinelemeli istif geri aşağı yolda t, aynı katmanda hangi karakteri basarsa basar , "Y" den "A" ya kadar.

Ana kod, şu ana skadarki harf dizisinde birikmesi dışında aynı şeyi yapar ve yukarı-aşağı dizeyi yazdırır s+s[-2::-1].

2 bayt için xsot'a teşekkürler.

Python 3'te, aynı şey her şeyi bir satıra yerleştirerek bir bayt daha kısadır (73 bayt).

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

Değişkenleri dengelerseniz 2 bayt kaydedebilirsiniz f(x=66,s='A'). Bu s, işlev gövdesi yerine işlev çağrısında güncelleme yapmanızı sağlar .
xsot,

Python 3 sürümünüz, Python 2 akrabası gibi, Z'ye ve geriye kadar giden en uzun sıraya sahip olmak için 89 yerine 90 değerine ihtiyaç duyduğunu düşünüyorum.
Tebbe

@Tebbe Teşekkürler, onları düzeltti.
xnor

8

brainfuck, 1733 121 119 bayt

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

Biraz daha okunabilir sürüm:

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

Açıklama muhtemelen gelmek üzere.


Her karakteri el ile oluşturmak yerine bir döngü kullanmayı deneyin.
Sızdıran Rahibe,

@LeakyNun Nasıl gideceğimi bilmiyorum. Baska öneri?
DanTheMan

4
Güzel, yani sadece 4 saat uyudun.
Sızdıran Rahibe

1
Programı çıktıdan daha küçük tuttuğunuz için tebrikler!
GuitarPicker

1
1612 bayt bir golf nasıl yapılır?
FantaC

8

05AB1E , 20 13 12 6 bayt

Adnan sayesinde 2 bayt kaydedildi. Magic Octopus Urn ve bazı yeni dil işlevleri
sayesinde 6 byte tasarruf sağladı .

Aη€ûû»

Çevrimiçi deneyin!

açıklama

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

Çok hoş! Değişebilirsin Œ26£için .pönek komut olan. Ayrıca, değiştirebilir D,için =haşhaş olmadan hangi baskılar.
Adnan

Vay, zekice bir numara gF,!
Adnan

@Adnan: Teşekkürler! Orada bir önek komutu olduğunu biliyordum :) Uzatılmış olanları nadiren kontrol ediyorum.
Emigna

2
Bu çatallanma komutu  çok hoş ve gerçekten temiz bir özellik.
mil

1
@carusocomputing: Maalesef ûmeydan okumadan daha yeni ve bu cevabı rakipsiz yapacaktır.
Emigna

6

J, 26 23 22 bayt

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

açıklama

,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}.|.Bunu dene
Leaky Nun

@LeakyNun Teşekkürler Neden farklı olduklarını düşündüm bilmiyorum.
mil,




5

C, 272 247 234 230 144 137 bayt:

( Sigalor'dan golf ipuçları ve püf noktaları sayesinde önceki yöntemime kaydedilen birçok bayt ( 272 -> 230) ! )

( Daha iyi bir yönteme geçerek yaklaşık 100 bayt ( 230 -> 144) kaydedildi . )

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");}}

Şimdiye kadar olan ilk cevabım C. Kısa süre önce kendi kendine öğrenmeye başladım, bakalım nasıl gidiyor.

Eylem C! (Ideone)


1
Ahhh, ben de bir C cevabı eklemek istedim ... Her neyse, o zaman size yardım edeceğim;) İlk olarak, bu kod golf, mükemmel bir kod yazmanıza gerek yok. Derleyici uyarıları tamamen iyi. Bu nedenle main()'s dönüş türünü ve hatta' nı kaldırabilirsiniz #include <stdio.h>. GCC (ve ayrıca Ideone gibi siteler) bunun için sorun değil. Daha sonra, değişken tanımlarını bir fonksiyonun parametre listesine dış kaynak olarak atabilirsiniz. Izin for(int i=65;...haline for(i=65...ve değişim main()için main(i). Diğer tüm int değişkenleri için de aynısını yapın (GCC varsayılan olarak eksik türleri int).
sigalor

@sigalor İpuçları için teşekkürler! :) Sadece bir soru: neden değişmem main()gerekiyor main(i)?
R. Kap,

@sigalor Aslında, şimdi bir sürü derleme hatası alıyorum.
R. Kap,

Eğer beyan olmadığında idöngünün başlatılmasını içinde değişken, başka bir yerde ilan etmek gerekir. Ve (en azından C) 'de bir fonksiyonun parametreleri normal değişkenler gibi kullanılabildiğinden, hiçbir problem olmamalıdır. BTW, hangi derleyiciyi kullanıyorsunuz?
sigalor

@sigalor Şu anda CIdeone'da. Birkaç <variable> undeclaredhata alıyorum .
R. Kap,

5

JavaScript (ES6), 81 bayt

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

5

Mathematica 59 bayt

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

Sanırım //Columnbaştan kaldırmak ve kodunuzu Column@eserler ile öneklemek .
Yytsi,

2
Saydın gibi görünüyor ve tek bayt olarak. Onları içeren ve kutudan Mathematica tarafından da desteklenen tek baytlık bir kod sayfası olduğundan şüpheliyim. UTF-8'de üç byte harcadılar, bu yüzden düz üzerinden hiçbir şey kaydetmiyorlar [[...]]. Ayrıca Columnbir Mathematica not defterinde sadece satırların listesi gibi göründüğü için ne kadar meşru olduğundan emin değilim . Bu kodu bir komut dosyasından çalıştırmak hiçbir şey göstermez. Ancak, Print/@aynı bayt sayısıdır ve her iki durumda da çalışır.
Martin Ender

Uzun bir adresle bir sayfanın bağlantısını yapmak istiyorsanız, aşağıdakileri yapabilirsiniz: [what you see](actual link). Ör. [Example Link](https://www.example.com), Örnek Bağlantıyı
Stan Strum


4

R, 63 61 59 bayt

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

Yardımsever LETTTERS[0]Herhangi bir karakteri döndürmez.

Düzenleme: @leakynun sayesinde bir kayıp

Düzenleme: @plannapus sayesinde iki teşekkür


1
\n
Yerine

3

TSQL, 159 bayt

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

Keman


1
Yapmaya çalıştım ama 250'den fazla baytla bitirdim; Gerçekten, benimkinden daha iyi bir çözüme sahipsin. Bir kez daha :)
Anuj Tripathi

3

Javascript (harici kütüphaneyi kullanarak (Numaralandırılabilir), 135 bayt

_.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))))

Kütüphaneye bağlantı: https://github.com/mvegh1/Enumerable

Kod açıklaması: 1'den başlayan ve 51 sayısı için bir dizi ints aralığı oluşturun. Her biri için karmaşık pred'e göre bir satır yazın. Bazı JS sihirbazlığını global değişkenler ve önbelleğe alma ... ve işte yapın. WriteLine'deki her int için sol el aralığı aralığını oluşturuyoruz ve global "g" ye ve String Joining (Write) 'a yazıyoruz."" sınırlayıcı ve her int'yi String eşlemesinin int karakter koduyla eşleştiriyoruz. Daha sonra, sağ tarafa, bu sıranın tersini alarak (ve ilk sırayı atlayarak, çünkü orijinal sıranın son elemanı ile eşleşecek ...) aynı mantıkla yazıyoruz. DÜZENLEME: Kütüphanedeki Yazma iç kısımları güncellendi. Boş bir dizilim şimdi boş yerine bir boş dize yazacaktır. Bu da cevap kapalı 15 bayt traş

görüntü tanımını buraya girin


1
Kütüphaneyi içe aktarmak için gereken baytları eklemeniz gerekmez mi?
MatthewRock,

1
Idk, bir kütüphane kullanarak 20'den fazla cevap gönderdim ve bunu bana ilk söyleyen sen olursun. Hiç kimsenin gerçekten umursadığını sanmıyorum çünkü cevaplarım yine de asla kazanmıyor
applejacks01

1
@ applejacks01 Almadığınızdan emin olun, o zaman en üstte "JS + Numaralandırılabilir" gibi bir şey söylemek zorundasınız. "Bash + Coreutils" için benzer
mbomb007 14

2
İçe aktarma işlemi sayılır. Python + SymPy cevapları hala var import sympyya from sympy import*da üstünde. Bash + x yalnızca yüklemek zorunda çünkü cevaplar farklıdır x , nasılsa etkinleştirmek değil.
Dennis,

1
@PatrickRoberts Mücadele ilan edilmeden önce kütüphane var olduğu sürece, evet. Python make kullanımını cevaplar sympy, numpy, scipyher zaman, vb.
Dennis,

3

Powershell, 61 52 bayt

9 bayt tasarrufu için TimmyD'ye teşekkürler!

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

Büyük harfler için ileri, sonra geri için ASCII değerleri arasında geçiş yapar. Her sayı için, bu ilk X sayısının bir dizisini oluşturur, X-1 sayısını kaldırır, ardından ilk X sayısının tersini ekler, ki bunlar daha sonra karakterlere yazılır ve bir dizgeye eklenir.


Hey, bu iyi, teşekkürler! Daha 65..90..65önce başaramadığım bir hevesle takıldım. Sanırım aralıkları birlikte ekleyebileceğimi unuttum.
Ben Owen,

3

Çedar , 102 96 79 69 67 bayt

Downgoat sayesinde 17 byte ve 10 daha fazlası için ilham.

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

Dizelerin birleştirilebildiği, ancak dizileri oluşturamayacağı gerçeği, iki aralığı dizgelere dönüştürmek, birleştirmek ve sonra dizilere dönüştürmek zorunda kalacağım anlamına geliyor.

Ayrıca, vfuseönde gelen bir yenidoğan üreten gerçeği , ilk çizgiyi manuel olarak oluşturmam ve sonra kalanı uyuşturmam gerektiği anlamına geliyor.

@" bir dyad olarak (iki argüman işlevi) doğrudan dizeye dönüştürebilir, ancak tersine çevrilmiş aralık için çalışmaz (eğer ilk argüman ikinciden büyükse).

Menzil yarı kapsayıcıydı. Hata düzeltmesinden sonra kapsayıcı oldu.

kullanım

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"

Çedar, 55 bayt (yarışmaz)

Gelen son sürümü tüm düzeltmeler ile, cevap:

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

ama meydan okumadan sonra yapıldı.


@"(1|>26)olabilir1@"26
Downgoat

String.lettersolabilir(65@"91)
Downgoat

String.letters.slice(0,i)belki olabilir65@"(66+i)
Downgoat

Aha, seni oldum bkz ızgara senin ByteCount.
steenbergh


3

VBA, 94 bayt

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

Hemen penceresinde? T ile ara

Sadece neler olduğunu açıklamak için: Hem alfabe geçişini hem de çizgi uzunluğunu yansıtmak için iki kez Abs işlevini kullanıyorum. Her iki durumda da tek aşırı değer nedeniyle görev için uygundur, bu, Abs öncesi değişkeninin sıfır geçişine karşılık gelir.

VBA Anlık penceresinde basit bir komut kümesi olarak, bir program veya işlev yerine, aşağıdakilerin 72 bayta ihtiyacı olacaktır:

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

(@GuitarPicker sayesinde)


1
İzlanda bayrağı gönderimlerimden birinde de benzer bir mantık kullandım. Bunu hemen pencerede çalıştırarak ve işlev bildirimini geçerek daha fazla golf oynayamaz mıydınız, ya da bu aşina olmadığım bir kuralı ihlal ediyor mu?
GuitarPicker

@GuitarPicker; acil pencerede çalışmanın eksiksiz bir program olarak sayılıp sayılmadığından emin değil, ancak öyleyse 8 bayt daha az etkili; yerine ile başlayan Function T:ile sonuna :?T(bundan sonra "" olarak T sıfırlamak gerekir çünkü yalnızca bir kez çalışacak olsa da -? ama kim daha bu üçgen olandan ihtiyacı)
Joffan

2
Birlikte ?gidersen T'ye bile ihtiyacın yok ;.
GuitarPicker

Bu yöntemi kullanarak onu 71'e kadar tıraş etmeyi başardım. İpucu: vbCrLf dosyasına da ihtiyacınız olmayacak.
GuitarPicker

1
evet, aynısını aldım; iade gerektiğini unutmayın.
Joffan

3

Python, 73 71 bayt

Özyineleme için @xnor'a teşekkürler

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

açıklama

  • Parametreler :
    • x Alfabedeki bir sonraki harfin ascii değeri
    • s alfabe için bir akümülatördür
    • tÜçgenin içindeki bir çizgidir (yani s+ s backwards)
  • Dönüş : talfabe yapıldıysa (yani merkezdeyiz)
  • Başka : t+f(...)+tile:
    • x artırılır
    • s bir sonraki harfle eklenmiş
    • ts+ s backwards+ 'ya sıfırla\n

Güncelleme

  • -2 [16-08-05] @xnor\n sayesinde öncüleri (+1) ve kısaltılmış koşullu (-3) kaldırma

1
Ne akıllıca bir yöntem, bir tsonraki döngüye geçiyor. Yine de fazladan bir lider yeni hat var; x=66,s='A''ondan kurtulur. Temel durum kısaltılabilir x/92*t or .
xnor

3

HTML + CSS, 884 karakter

(763 karakter HTML + 121 karakter CSS)

Sadece genişleyen Çatlak Nun 'ın yorumunu üzerinde MonkeyZeus s' cevabı . (Yorumu yanlış olsa da…)

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

Brachylog , 37 29 bayt

Boyunca onun yardımı için Fatalize Krediler.

Fatalize sayesinde 4 bayt ve 4 bayt için ilham.

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

Çevrimiçi deneyin!

Tahmini 0 (Ana tahmin)

@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.

Tahmini 1 (Yardımcı tahmini)

Bu temelde verilen dizgiden bir palindrom oluşturur.

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

,AÖngörü 1'deki yerine hbir bayt kaydederek değiştirebilirsiniz .
16'da

Sen Ayrıca değiştirerek iki bayt tasarruf :1:2yt.ile :2&.bir ve ekleme !yüklem 2. sonunda (kesme seçim noktalarını)
Fatalize


3

R, 127 125 bayt

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"))

Bu çözümden tam anlamıyla memnun fordeğilsiniz , özellikle de iki döngüden, ancak daha iyi bir şey bulamadık!
LETTERSbüyük harfleri içerir.

Ungolfed:

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"))
               }

ifelse unsing için daha kısa bir yoldur if... else... ve bu şekilde çalışır:ifelse(condition,action if TRUE, action if FALSE)

Başka bir 125 baytlık çözüm:

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 bayt

String kullanmadan (131 bayt)

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":"")));

Dize ile (173 bayt)

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);

Sayesinde manatwork ve Kevin Cruijssen


2
PPCG'ye Hoşgeldiniz. Lütfen “Golf kodunu nasıl cevaplamalıyım?” Bölümünü okuyun. Kod-golf etiketinin bilgi sayfasındaki ipucu var mı? ”Bölümü . Bu tür zorluklara cevaplar kod boyutunu azaltmak için çaba göstermesi bekleniyor. Bu size yardım bilgilerine ulaşabilirsiniz Java golf için İpuçları ve <tüm dillerde> içinde golf için ipuçları .
Manatwork

1
Orada 4 üçlü operatör kullanıyorsunuz ve tüm koşullar parantez içine alınmış. 8 karakter kaydetmek için bunları kaldırabilirsiniz.
Manatwork

1
d ve k -1'in altına inemez, değil mi? Sonra k için aynı, d!=-1ile değiştirebilirsiniz d>-1. (BTW, golf versiyonunu düzeltmeyi unuttun.)
Manatwork

3 bayttan tasarruf etmek için döngü gövdesinden artış bildirimi bölümüne ifadeler taşındı ..
Syamesh K

1
Merhaba, bir süre geçtiğini biliyorum, ancak iki şeyi golf i+=k==1?1:-1yapabilirsiniz : olabilir i+=kve System.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);olabilir System.out.print((char)c+((c+=d)<65?"\n":"")));. Toplamda şu olur ( 131 bayt ):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":"")));
Kevin Cruijssen

3

brainfuck, 79 bayt

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

biçimlendirilmiş:

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

Çevrimiçi deneyin


2

Sesos , 27 bayt

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

Çevrimiçi deneyin! Kontrol Debug oluşturulan SBIN kodunu görmek için.

Sesos derleme

Yukarıdaki ikili dosya aşağıdaki SASM kodunu birleştirerek oluşturulmuştur.

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 bayt

/'/\/\///+/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

Tabii kazanmadım ama işte Martin Ender'in önünde ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.