Negazione dello schema piramidale


13

Nella mia lingua Pyramid Scheme , esiste un costrutto leggermente divertente: il triangolo vuoto:

^
-

Se non viene fornito alcun argomento, viene restituito 0. Per generare 1usando questo costrutto, potremmo usare questo:

   ^
  /!\
 ^---
 -

Questo passa semplicemente 0alla funzione di negazione. Possiamo continuare a negare questo risultato:

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

Per ottenere 0. Un'altra negazione dà:

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

Sfida

Dato un numero intero n ≥ 1, emette la piramide vuota che viene negata n volte nel modo descritto.

Casi test

input
output

1
   ^
  /!\
 ^---
 -

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

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

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

Per negazione qui suppongo che tu voglia dire bitally complement ( ~)?
user202729

@ user202729 No, intendo negazione regolare.
Conor O'Brien,

Quindi è C / C ++ !( not).
user202729

@ user202729 Sì. Anche se ciò che significa è tangenziale al problema
Conor O'Brien il

1
/!\ Avvertimento! /! \ Vedo triangoli di avvertimento ovunque!
RedClover,

Risposte:


7

Carbone , 17 byte

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

Provalo online! Il collegamento è alla versione dettagliata del codice. Spiegazione:

FN«

Ciclo per il numero appropriato di negazioni.

↙^→/!\¶³

Stampa una funzione di negazione. (Il si ³espande a ---.)

‖T

Rifletti la tela.

»↓^-

Alla fine del ciclo, stampa il triangolo vuoto.


Per fortuna, il triangolo vuoto usa -invece di_
Conor O'Brien il

@ ConorO'Brien Grazie per averlo sottolineato! Pensavo che non fosse del tutto corretto, ma non ci riuscivo ...
Neil,

4

Python 2 , 94 byte

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

Provalo online!

Cercando di giocare a golf ... 3 printaffermazioni sembrano terribilmente ridondanti.


2

JavaScript (ES6), 77 74 byte

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

Provalo:




1

Java 8, 104 byte

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

Spiegazione:

Provalo qui.

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

1

Retina , 70 68 60 byte

grazie a @MartinEnder per -8 byte

.+
$*
r`11
21
1
¶  /!\¶ ^---
2
¶/!\¶---^
^¶( *)
$1 ^$&
$
¶ -

Provalo online!








0

Python 3 , 167 byte

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

Provalo online!

-4 byte grazie a Mr. Xcoder
-1 byte grazie a Jonathan Frech


' '*2*npuò essere ' '*n(due spazi lì, ma basta ... markdown SE), e quindi ' '*n+' 'può essere sostituito da ' '*-~nper 168 byte .
Mr. Xcoder,

@ Mr.Xcoder Oh fantastico, grazie!
HyperNeutrino,

Penso che r=="^"possa essere r>"]".
Jonathan Frech,

@JonathanFrech Sembra essere così, grazie!
HyperNeutrino,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.