Negacja schematu piramidy


13

W moim języku Schemat piramidy jest nieco zabawny: pusty trójkąt:

^
-

Gdy nie podano argumentów, zwraca 0. Aby wygenerować 1za pomocą tego konstruktu, możemy użyć tego:

   ^
  /!\
 ^---
 -

To po prostu przechodzi 0do funkcji negacji. Możemy nadal negować ten wynik:

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

Aby uzyskać 0. Jeszcze jedna negacja daje:

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

Wyzwanie

Biorąc pod uwagę liczbę całkowitą n ≥ 1, wyjmij pustą piramidę negowaną n razy w opisany sposób.

Przypadki testowe

input
output

1
   ^
  /!\
 ^---
 -

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

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

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

Tutaj przez negację mam na myśli bitowe uzupełnienie ( ~)?
user202729,

@ user202729 Nie, mam na myśli regularną negację.
Conor O'Brien

To jest C / C ++ !( not).
user202729,

@ user202729 Tak. Chociaż to, co oznacza, jest styczne do problemu
Conor O'Brien

1
/!\ Ostrzeżenie! /! \ Wszędzie widzę ostrzegawcze trójkąty!
RedClover,

Odpowiedzi:


7

Węgiel drzewny , 17 bajtów

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

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

FN«

Pętla dla odpowiedniej liczby negacji.

↙^→/!\¶³

Wydrukuj funkcję negacji. ( ³Rozwija się do ---.)

‖T

Odbij płótno.

»↓^-

Na końcu pętli wydrukuj pusty trójkąt.


Po prostu, pusty trójkąt używa -zamiast_
Conor O'Brien

@ ConorO'Brien Dzięki za zwrócenie na to uwagi! Myślałem, że to nie wygląda dobrze, ale nie mogłem położyć na nim palca ...
Neil,

4

Python 2 , 94 bajty

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

Wypróbuj online!

Próbowanie gry w golfa ... 3 printstwierdzenia wydają się strasznie zbędne.


2

JavaScript (ES6), 77 74 bajtów

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

Spróbuj:




1

Java 8, 104 bajty

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

Wyjaśnienie:

Wypróbuj tutaj.

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 bajtów

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

Wypróbuj online!

-4 bajty dzięki Mr. Xcoder
-1 bajt dzięki Jonathan Frech


' '*2*nmoże być ' '*n(dwie spacje tam, ale eugh ... SE Przecena), a następnie ' '*n+' 'mogą być zastąpione przez ' '*-~ndo 168 bajtów .
Pan Xcoder,

@ Mr.Xcoder Och, dziękuję!
HyperNeutrino

Myślę, że r=="^"może być r>"]".
Jonathan Frech,

@JathanathanFrech Wygląda na to, dzięki!
HyperNeutrino,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.