Piramit Şeması Olumsuzluğu


13

Dilimde Pyramid Scheme boş üçgen: Bir hafifçe komik yapı vardır:

^
-

Hiçbir argüman verilmediğinde geri döner 0. 1Bu yapıyı kullanarak oluşturmak için şunu kullanabiliriz:

   ^
  /!\
 ^---
 -

Bu sadece 0olumsuzlama işlevine geçer . Bu sonucu reddetmeye devam edebiliriz:

 ^
/!\
---^
  /!\
 ^---
 -

0 almak için bir olumsuzluk daha verir:

   ^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -

Meydan okuma

Bir n- 1 tamsayısı verildiğinde , boş piramidin tarif edilen şekilde n kez negatifleştirildiğini gösterir .

Test senaryoları

input
output

1
   ^
  /!\
 ^---
 -

2
 ^
/!\
---^
  /!\
 ^---
 -

3
   ^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -

6
 ^
/!\
---^
  /!\
 ^---
/!\
---^
  /!\
 ^---
/!\
---^
  /!\
 ^---
 -

Burada olumsuzlama ile sanırım bitsel tamamlayıcı ( ~) demek ?
user202729

@ user202729 Hayır, düzenli olumsuzlama demek istiyorum.
Conor O'Brien

Yani C / C ++ !( not).
user202729

@ user202729 Evet. Ne anlama geldiği soruna teğet olsa da
Conor O'Brien

1
/! \ Uyarı! /! \ Her yerde uyarı üçgenleri görüyorum!
RedClover

Yanıtlar:


7

Kömür , 17 bayt

FN«↙^→/!\¶³‖T»↓^-

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı versiyonudur. Açıklama:

FN«

Uygun sayıda olumsuzluk için döngü yapın.

↙^→/!\¶³

Bir olumsuzlama işlevi yazdırın. ( ³Genişletilir ---.)

‖T

Tuvali yansıtın.

»↓^-

Döngünün sonunda boş üçgeni yazdırın.


Sadece fyi, boş üçgen -yerine kullanıyor_
Conor O'Brien

@ ConorO'Brien Bunu gösterdiğin için teşekkürler! Tam olarak doğru görünmediğini düşündüm, ama parmağımı üzerine koyamadım ...
Neil

4

Python 2 , 94 bayt

i=input();print i%2*2*" "+" ^"
while i:print['/!\\\n---^','  /!\\\n ^---'][i%2];i-=1
print" -"

Çevrimiçi deneyin!

Bu golf için çalışıyor ... 3 printifadeleri çok gereksiz görünüyor.


2

JavaScript (ES6), 77 74 bayt

n=>(s=`^
  /!\\
 ^---`,n%2?`   `+s:` ^`)+`
/!\\
---${s}`.repeat(n/2)+`
 -`

Dene:




1

Java 8, 104 bayt

n->{String r=n%2>0?"   ^\n":" ^\n";for(;n-->0;r+=n%2<1?"  /!\\\n ^---\n":"/!\\\n---^\n");return r+" -";}

Açıklama:

Burada deneyin.

n->{                       // Method with integer parameter and String return-type
  String r=                //  Result-String, starting at:
           n%2>0?          //  If the input is odd:
            "   ^\n"       //   Start the result at "   ^" + new-line
           :               //  Else (the input is even):
            " ^\n";        //   Start the result at " ^" + new-line
  for(;n-->0;              //  Loop the input amount of times
    r+=n%2<1?              //   If the current row is even:
        "  /!\\\n ^---\n"  //    Append the result-String with "  /!\" + new-line
                           //                                  " ^---" + new-line
       :                   //   Else (the current row is odd):
        "/!\\\n---^\n"     //    Append the result-String with "/!\" + new-line
                           //                                  "---^" + new-line
  );                       //  End of loop
  return r                 //  Return the result-String
          +" -";           //   + " -"
}                          // End of method








0

Python 3 , 167 bayt

def f(n):
	g=[[" "]*5for _ in'  '*-~n];a=["^","/!\\","---"]
	for i in range(n):
		for r,R in zip(a,g[i*2:]):R[(i-n)%2*2+(r>"]"):]=r
	g[-2][1]="^";g[-1][1]="-";return g

Çevrimiçi deneyin!

-John
Frech sayesinde Bay Xcoder -1 bayt sayesinde -4 bayt


' '*2*nolabilir ' '*n(orada iki boşluk, ancak eugh ... SE markdown) daha sonra, ve ' '*n+' 'ile ikame edilmiş olabilir ' '*-~niçin 168 bayt .
Bay Xcoder

@ Mr.Xcoder Çok güzel, teşekkürler!
HyperNeutrino

Bence r=="^"olabilir r>"]".
Jonathan Frech

@JonathanFrech Öyle görünüyor, teşekkürler!
HyperNeutrino
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.