Trzy-trzy-trzy!


66

Napisz program, który generuje dane wyjściowe takie, że:

  1. Pojawiają się co najmniej trzy różne znaki.
  2. Liczba wystąpień każdej postaci jest wielokrotnością 3.

Na przykład A TEA AT TEEjest ważne, ponieważ produkcja każdego z 4 odrębnych postaci, A, E, Ti (space), odbywa się 3 razy.

Oczywiście wyzwanie dotyczące liczby 3 musi mieć trzeci wymóg. Więc:

  1. Sam program musi również spełniać dwa pierwsze wymagania. (Oznacza to, że twój program będzie miał co najmniej 9 bajtów.)

Musisz napisać pełny program, a nie funkcję. Pamiętaj, aby pokazać odpowiedź swojego programu w odpowiedzi.

Zachęcamy również do ciekawości:

  • nie używać komentarzy, aby spełnić wymaganie 3, jeśli możesz mu pomóc
  • aby uzyskać wynik, który nie jest ciągiem powtarzanym 3 razy
  • aby odróżnić dane wyjściowe od samego programu (w przypadku języków, które mogą automatycznie wyświetlać zawartość własnego programu, możesz przyczynić się do tej wiki społeczności ).

To jest . Najkrótszy kod w bajtach wygrywa.


5
Czy nowe linie liczą się (jako odrębny znak)?
zeppelin

4
Czy dozwolone są programy składające się wyłącznie z literałów? (Istnieje wiele języków, w których 123123123będzie działać, jak obecnie napisano.)

2
@zeppelin Tak, nowe znaki liczą się jako odrębny znak.
darrylyeo

2
Chcę zapytać, czy program może wypisać np. abcabcabcZ końcowym znakiem nowej linii?
ETHprodukcje

1
@ETHproductions Ach, rozumiem. Nie, to niedozwolone. Dopuszczalne byłyby jednak trzy końcowe znaki nowej linii.
darrylyeo

Odpowiedzi:


59

Brain-Flak , Flakcats , Brain-Flueue , Brain-Flak Classic , Miniflak i Fλak 18 bajtów

Sprawdzony optymalny!

((([()][()][()])))

Wypróbuj online!

Wyjaśnienie

Brain-Flak, Brain-Flueue, Miniflak i Fλak

   ([()][()][()]) Push -3
  (              ) Copy
 (                ) Copy

To drukuje:

-3
-3
-3

(Kończy się nowa linia)

Brain-Flak Classic

Brain-Flak Classic to oryginalna wersja Brain-Flak i ma kilka ważnych różnic od współczesnego Brain-Flak. W BFC [...]drukuje zawartość zamiast ją negować.

   [()] Print 1
       [()] Print 1
           [()] Print 1
  (            ) Push 3
 (              ) Push 3
(                ) Push 3

Pod koniec wykonywania 3 3 3drukowana jest zawartość stosu ( ).

To drukuje:

1
1
1
3
3
3

(Kończy się nowa linia)

Flakcats

Flakcats różni się od pozostałych 4 flaków i jestem zaskoczony, że działa to w Flakcats. Trzej operatorzy tutaj są prawie tacy sami jak ci, których używa Brain-Flak.

Główną różnicą w tym konkretnym programie między Flakcats jest (...)operator, który w Flakcats jest równoważny ([{}]...)w Brain-Flak. Nie ma to jednak dla nas znaczenia, ponieważ zbiera zera, a zatem działa podobnie jak Brain-Flak.

Oto ten program skompilowany w Brian-Flak:

([{}]([{}]([{}][()][()][()])))

To drukuje:

-3
-3
-3

(Kończy się nowa linia)

Dowód optymalności w Brain-Flak i Miniflak

Nie jest to formalny dowód, ale raczej nieformalny dowód, który należałoby rozszerzyć, aby był bardziej rygorystyczny

Z powodu ograniczeń, że programy Brain-Flak muszą być łańcuchem zrównoważonym, a długość programu musi być wielokrotnością 3, każde prawidłowe przesłanie musi być wielokrotnością długości 6. Oznacza to, że każde rozwiązanie mniejsze niż 18 musi mieć długość 12.

Ze względu na to, że końcowe znaki wyjściowe kończą się na nowej linii, ostateczna wysokość stosu musi być wielokrotnością trzech, w przeciwnym razie złamiemy ograniczenia dotyczące wyjścia.

Każde prawidłowe zgłoszenie o długości 12 musi mieć 2 typy nawiasów klamrowych (posiadanie mniejszej liczby łamałoby ograniczenia dotyczące liczby różnych znaków, a więcej oznaczałoby więcej niż 12 znaków). Ponieważ program generuje dane wyjściowe, musi mieć push.

To pozwala nam wybrać inny zestaw aparatów ortodontycznych. Dostępne są następujące opcje:

<...>/<>

To się nie udaje, ponieważ musimy wygenerować „wartość”, aby utworzyć dowolną liczbę inną niż zero, musimy zrezygnować z, aby utworzyć liczbę, ()która uniemożliwia przesuwanie więcej niż dwa razy.


[...]/[]

To się nie udaje z tego samego powodu, co ostatni nieudany. Kwadratowe nawiasy klamrowe są naprawdę złe w tworzeniu wartości. []Monada może tworzyć wartość, ale musimy naciskać numery pierwszej i my wtedy nie ma wystarczającej ilości nawiasy pozostały wcisnąć trzy razy.


{...}/{}

Ten jest obiecujący, możemy stworzyć pętlę i użyć jednego ()do wielokrotnego wypychania, ale niestety nie jest to możliwe.

Aby pętla się zakończyła, w stosie musi znajdować się zero w pewnym momencie, a żeby mieć poprawne wyjście, musimy mieć coś innego niż zero na stosie na końcu programu. Ponieważ nie mamy []ani <>zera na końcu pętli, musi to być niejawne zero z dołu stosu. Oznacza to, że pętla nie może dodawać żadnych nowych liczb do stosu, co czyni go bezużytecznym.


Ponieważ żadna z opcji nawiasu klamrowego nie może utworzyć programu o długości 12, żaden nie może istnieć.

Ponieważ Miniflak jest podzbiorem Brain-Flak, każdy krótszy program Miniflak byłby również krótszym programem Brain-Flak, a zatem nie istnieje.

Dowód optymalności w kanale dymowym

Brain-Flueue to język żartów oparty na Brain-Flak. Obaj są tak podobni, że ich tłumacze są identyczni wszędzie oprócz dwóch linii. Różnica między nimi polega na tym, jak sugerują ich nazwy, Brain-Flueue przechowuje swoje dane w kolejkach, podczas gdy Brain-Flak przechowuje swoje dane w stosach.

Na początek mamy te same ograniczenia dotyczące rozmiaru programu utworzone przez Brain-Flak, dlatego szukamy programu o rozmiarze 12. Ponadto będziemy potrzebować (...), aby utworzyć dane wyjściowe i inną parę. <>i []pary nie działają w Brain-Flueue do dokładnie tego samego powodu nie działają w Brain-Flak.

Teraz wiemy, że nasz program musi składać się ze znaków ((())){{{}}}.

Za pomocą tych samych metod, które zastosowano w poprzednim dowodzie, możemy wykazać, że w końcowym programie musi być pętla.

Teraz są różne dowody, ponieważ Brain-Flueue działa w kolejkach, a nie w stosach, program może wyjść z pętli z wartościami w kolejce.

Aby wyjść z pętli, będziemy potrzebować zera w kolejce (lub pustej kolejce, ale jeśli kolejka będzie pusta, otrzymamy ten sam problem co Brain-Flak), będzie to oznaczać, że będziemy musieli otworzyć nasz program, ({})aby utworzyć zero. Będziemy potrzebować push wewnątrz pętli, aby wypchnąć niezbędną liczbę elementów do kolejki. Będziemy także musieli nacisnąć liczbę niezerową przed pętlą, abyśmy mogli w ogóle wejść do pętli; będzie nas to kosztować absolutnie minimum (()). Użyliśmy teraz więcej parenów niż my.

Zatem nie ma programu Brain-Flueue wykonującego zadanie o długości 12 bajtów, a ponadto nasz program jest optymalny.

Optymalne rozwiązanie w Flakcats i Brain-Flak Classic

Poniższe rozwiązanie jest optymalne dla Flakcats i Brain-Flak Classic.

((([][][])))

Wyjaśnienie

    [][][] -3
 (((      ))) push 3 times

Alternatywne 24-bajtowe rozwiązania Brain-Flak

(<((<((<(())>)())>)())>)

Wypróbuj online!

((<((<((<>)())>)())>)())

Wypróbuj online!

((((((()()()){}){}){})))

Wypróbuj online!


2
+1 za dowód.
HyperNeutrino

3
+1 również dla poliglota, szczególnie. nie wszystkie dane wyjściowe są takie same.
Shieru Asakoto,

27

Galaretka , 9 bajtów

**‘‘‘888*

Pełny program, który drukuje 700227072 , który ma 888 kostki.

TryItOnline!

W jaki sposób?

**‘‘‘888* - Main link: no arguments
          - implicit L=R=0
*         - power       A = L ^ R = 1
  ‘       - increment   B = L + 1 = 1
 *        - power       C = A ^ B = 1
   ‘      - increment   D = C + 1 = 2
    ‘     - increment   E = D + 1 = 3
     888  - literal     F = 888
        * - power           F ^ E = 700227072

5
888^3jest 700227072? To bardzo sprytne, być może inne języki mogą skorzystać z tej sztuczki.
ETHproductions

23

Poliglot czysto dosłownych odpowiedzi, 9 bajtów

333111222

To jest post społeczności wiki służący do zbierania odpowiedzi, które są dosłowne, że dany język jest drukowany automatycznie. Ponieważ jest to wiki społeczności, możesz je edytować, aby dodać więcej języków, w których działa.

Ten program działa w:

  • PHP
  • HTML (prawdopodobnie nie język)
  • Galaretka (i M )
  • 7 (bardziej interesujące, ponieważ program jest interpretowany zarówno jako dane, jak i kod; pierwszy 3drukuje dane, reszta programu to bezużyteczne manipulowanie stosami)
  • CJam
  • Japt
  • Marchewka
  • R (wyświetlacz R wyświetla również [1] jako metadane)
  • RProgN
  • Właściwie (choć faktycznie drukuje 2\n2\n2\n1\n1\n1\n3\n3\n3\n)
  • ///
  • Makaron
  • TI-Basic
  • SimpleTemplate
  • ReRegex
  • Łuska
  • Zasób (chociaż powoduje to odwrócenie łańcucha)

Ignorując ostatnią nową linię, jest to ważne w kilku innych językach:

Większość linków znajduje się w Try It Online!


3
To drukuje 2\n2\n2\n1\n1\n1\n3\n3\n3\nw rzeczywistości, co jest całkowicie poprawne. Czy należy to dodać do postu?
ETHprodukcje

@ETHproductions Właściwie uważam, że powinienem zostać dodany do posta, ponieważ używa tego samego kodu;)
Kritixi Lithos

Jako osoba, która faktycznie napisała, zgadzam się, że należy do tego postu. Nowe linie tak naprawdę nie mają znaczenia.
Mego

Działa to również w języku, który napisałem: SimpleTemplate . Skompiluje to w nadmierną liczbę zabójstw echo '333111222';(w PHP), ale działa.
Ismael Miguel

4
@ IsmaelMiguel: To jest odpowiedź wiki społeczności ; zostało napisane tylko w 29% przez ETHproductions (i tak naprawdę to ja stworzyłem odpowiedź, jak widać z historii wersji; ETHproductions ma więcej tekstu w aktualnej wersji odpowiedzi niż ktokolwiek inny, ale zdecydowanie nie jest ' odpowiedzialny za całość). Cały jego cel ma być edytowany przez wielu użytkowników w ramach współpracy. (To różni się od zwykłych odpowiedzi, które nie są przeznaczone do edycji.)

21

C #, 114 111 118 102 bajtów

Jeśli nie zależy nam na użyciu właściwych słów: (102 bajty)

class CCcddiilMMmmnrrSSsttvvWWyy{static void Main(){{System.Console.Write(("A TEA AT TEE"));;;}}}///".

Jeśli zależy nam na odpowiednich słowach: (120 bajtów)

class erebeWyvern{static void Main(){int embedWildbanana;{System.Console.Write(("A TEA AT TEE"));;}}}///CC Myst mvcSMS".

Moje oryginalne zgłoszenie - bez rozróżniania wielkości liter: (113 bajtów)

class EreBeWyvern{static void Main(){int embedwildbanana; {System.Console.Write(("A TEA AT TEE"));;}}}/// vyt".

Wiem, że komentarz nie jest tak naprawdę zgodny z duchem CG, ale to wszystko, co mogłem wymyślić w ograniczonym czasie, zobaczę, czy mogę to poprawić w ciągu dnia. Na pewno muszę zdobyć co najmniej kilka punktów bonusowych, aby skinąć głową na awanturę.

Edycja: Dziękuję roberto06 za złapanie brakujących liter!


1
Jestem facetem w C ++, a nie C #, ale czy nie możesz po prostu owinąć wywołania Write w {()} bez zmiany?
Sparr

1
Możesz umieścić nawiasy wokół argumentu zamiast połączenia jako całości.

7
Punkty Brownie za dzikiego banana.
darrylyeo

6
Miły! Lubię nazwy zmiennych. +1
Łagodnie Milquetoast

1
Powinieneś usunąć Vz komentarza i dodać vyt, ponieważ Vjest tam obecny tylko wtedy, gdy vjest obecny dwukrotnie (literówka, jak sądzę), yjest również obecny dwukrotnie i tjest obecny 5 razy. Zobacz tutaj . Niemniej świetna robota!
roberto06

18

JavaScript, 36 33 bajtów

alert(((alert|alert||333111222)))

Alarmy 333111222. Działa to, ponieważ |konwertuje oba operandy na 32-bitowe liczby całkowite, a każda wartość, która nie wygląda jak liczba całkowita (np. Funkcja alert), jest konwertowana na 0. 0|0jest 0, więc ||operator zwraca właściwy operand, lub333111222

Kilka bardziej interesujących wersji:

(a="(trelalert)\\\"")+alert(a+=a+=a)

Wyjścia (trelalert)\"(trelalert)\"(trelalert)\".

Zastosowanie rozwiązania .repeatbyłoby tej samej długości, dzięki wspólnemu aert:

alert("(trpp.all)\\\"".repeat(3.33))

które wyjścia (trpp.all)\"(trpp.all)\"(trpp.all)\".

Korzystając z dodatkowych ukośników, aby się pozbyć li p prawie działa:

a\x6cert("(trax.cc)\"".re\x70eat(6.00677))

Ten wychodzi (trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)".


1
Ładne nadużycie miejsc po przecinku!
darrylyeo

2
@darrylyeo Heh, dzięki. Mogłem z łatwością utknąć w sznurku, ale to nie byłoby tak zabawne ;-)
ETHproductions

Pomyślałem, że dam ci znać, że jesteś zwieńczony odpowiedzią ES6 .
darrylyeo

14

CJam , 9 bajtów

10,10,10,

Wyjścia 012345678901234567890123456789

Wypróbuj online!

Wyjaśnienie

10,       The range from 0 to 9
   10,    The range from 0 to 9
      10, The range from 0 to 9

nie 3,3,3, działa na 7 bajtów?
chim

Ach! tak, trzeci warunek :)
chim

Argh, stracona okazja do wykorzystania 99,99,99,, bo dlaczego nie?
przepływ pracy

@workoverflow Ponieważ to nie działa z trzecim wymaganiem. Program musi zawierać trzy różne znaki.
DLosc

@DLosc Touche, zapomniałem o tym!
przepływ pracy

11

pieprzenie mózgu , 12 bajtów

++[+...][][]

Nikt nie powiedział, że wynik musi być krótki. Spowoduje to wyświetlenie 3 kopii każdego znaku ascii z wyjątkiem pierwszych 2.

Możesz udowodnić, że jest tak krótki, jak to możliwe. Musisz generować, dlatego potrzebujesz 3 '. muszą być różne dane wyjściowe, dlatego potrzebujesz 3 [+ -] teraz mamy maksymalnie 6. 9 znaków musi zostać wydrukowanych, co oznacza albo dodanie 6 kolejnych „.” lub dodanie pętli, która doda kolejne 6 znaków.

Wypróbuj online!


10

Python 2, 36 30 bajtów

Ponieważ końcowy znak nowej linii jest niedozwolony, jest on prawdopodobnie tak krótki, jak to możliwe:

print"\\\""*3;print;print;3**3

Wypróbuj online

Wydaje \"trzy razy, a następnie trzy nowe wiersze.


Poniższe programy nie liczą końcowego znaku nowej linii, więc nie są prawidłowe.

27 bajtów :

print"""printprint"""*3*3*3

Drukuje 54 każdego znaku w print.

Wypróbuj online


Ta sama długość, krótszy wydruk:

print"""printprint*3*3"""*3

Wyjścia printprint*3*3printprint*3*3printprint*3*3


24 bajty:

print~9;print~9;print~9;

Mógłbyś zrobić print"""printprint*3*3"""*3dla znacznie krótszego wyjścia ;-)
ETHproductions

Czy nie możesz zrobić print 123;print 123;print 123;dla naiwnego rozwiązania?
ETHproductions

OP wyjaśniła, że ​​pojedynczy znak nowej linii jest niedozwolony (patrz komentarze).
FlipTack,

1
@ETHproductions Pewnie. To zależy od tego, jak jesteśmy naiwni.
mbomb007

3
Jeszcze bardziej naiwny:print~9;print~9;print~9;
Sp3000,


9

C, 66 bajtów

main(i){{for(i=0;i<3;i++){printf("""poop+fart=<3<3at0m=m0n""");}}}

Wynik

poop+fart=<3<3at0m=m0npoop+fart=<3<3at0m=m0npoop+fart=<3<3at0m=m0n    

Stara wersja 72 bajtów

main(i){for(i=0;i<3;i++){printf("poop+fart=<3<3 at {\"0m=m0\"}" "\n");}}

2
Nie tylko twój kod jest znacznie mniejszy niż to, co zrobiłem, ale także zawiera prawdziwe kawałki kupy i farts. Brawo.
dim

9

JavaScript (ES6), 30 bajtów

+alert((({alert}+{alert}+{})))

Wyjścia [object Object][object Object][object Object].

Działa, tworząc trzy obiekty:

  • pierwsze dwa są w formie { "alert" : alert }za pomocą notacji ES6{alert}

  • trzeci to prosty pusty obiekt

Następnie używa +się do łączenia ich ze sobą, a wszystkie trzy mają identyczny wyraz jako ciąg, [object Object].

Prowadzenie +jest bezużyteczne, występuje tylko w celu wypełnienia liczby +znaków, ale jest nieszkodliwe dla wyniku programu.


Sposób na pokonanie drugiej odpowiedzi JS!
darrylyeo

Powinieneś także dodać (ES6)do tytułu.
darrylyeo

@darrylyeo Dzięki! :) I dodałem ES6
apsillers

8

PKod , 9 bajtów

sonsonson

Wyjścia: 111222333


Wyjaśnienie:

Background: PKod has only one variable that you mess with, with the code
This variable starts with default value of 0

s  -  Add next char to the variable, and jump over it. 
n  -  Print numeric value of variable

o ma kod ascii char „111” w systemie dziesiętnym. Zatem s dodaje 111 do zmiennej, a następnie drukuje liczbę. Pierwszy „syn” robi to 111 i drukuje 111. Następnie robi 222 i drukuje 222, wreszcie czyni 333 i drukuje 333



7

Microscript II, 9 bajtów

{{{~~~}}}

Objaśnienie: Tworzy blok kodu, ale go nie wywołuje. Po zakończeniu wykonywania zawartość rejestru głównego (IE ten blok kodu) jest domyślnie drukowana.


Czy zamieściłeś coś podobnego w wyzwaniu Quine?
wizzwizz4,

@ wizzwizz4 {}technicznie byłby quine, ale nie sądzę, aby spełniał naszą definicję „właściwego quine”. Jednak program "q"q(który poddałem quine Challenge) tak.
SuperJedi224

@ wizzwizz4: To nie byłby właściwy quine, ponieważ każda postać reprezentuje siebie.

7

Sześciokąt , 9 bajtów

x!!xx@@!@

Wypróbuj online!

Wydrukować 120120120. xmożna zastąpić f-m(102-109)

Wyjaśnienie

  x ! ! 
 x x @ @
! @ . . .

Jest xx@@to tylko wypełniacz zgodny z zasadami. Główny przepływ jest zapisywany xw pamięci (o wartości ASCII 120), a następnie drukowany jako liczba 3 razy.


7

C, 111 bajtów

(Zwróć uwagę, że liczba bajtów to również trzy takie same liczby. Wow. Nie możesz zrobić więcej meta niż to.)

#include<stdio.h>
#define b "<acdhlmoprsu>."
#define t "en"
main(){{{printf(("<acdhlmoprsu>." b b t t t));;;}}}

Wydruki:

<acdhlmoprsu>.<acdhlmoprsu>.<acdhlmoprsu>.enenen


5

99 , 15 bajtów

9 9  9999
9
9
9

To jest dziewięć dziewiątek, trzy spacje i trzy wiersze, wynik to -1110-1110-1110 .

Wypróbuj online!

W jaki sposób?

9 9  9999 - V(9)=V(9)-V(9999)=1-1111=-1110
9         - print V(9)
9         - print V(9)
9         - print V(9)

Dwie spacje są traktowane jako jedna, ta trzecia spacja może być spacją również w dowolnej linii.


5

Bash + coreutils, 15 9 bajtów

id;id;id;

Wypróbuj online!

Przykładowe dane wyjściowe:

uid=1000 gid=1000 groups=1000 context=system_u:unconfined_r:sandbox_t:s0-s0:c19,c100,c173,c211
uid=1000 gid=1000 groups=1000 context=system_u:unconfined_r:sandbox_t:s0-s0:c19,c100,c173,c211
uid=1000 gid=1000 groups=1000 context=system_u:unconfined_r:sandbox_t:s0-s0:c19,c100,c173,c211

(Jeśli to wypróbujesz, wydrukuje Twój identyfikator UID, GID itp. 3 razy.)


Jeśli chcesz uniknąć powtarzania tego samego ciągu 3 razy (a także mieć takie same wyniki dla wszystkich, w przeciwieństwie do mojej pierwszej odpowiedzi), najlepsze, jakie znalazłem dla narzędzi bash + Unix, ma 15 bajtów:

dc<<<cczdzfzfdf

Wypróbuj drugą wersję online!

Wynik:

2
0
0
3
2
0
0
3
3
2
0
0

(Brak nowych linii w programie, 12 nowych linii na wyjściu.)

Objaśnienie programu DC w tej odpowiedzi:

c Clears the stack.
Stack: (empty)

c Clears the stack.
Stack: (empty)

z Pushes the current size of the stack (0) onto the stack.
Stack: (top) 0

d Duplicates the item at the top of the stack.
Stack: (top) 0 0

z Pushes the current size of the stack (2) onto the stack.
Stack: (top) 2 0 0

f Prints the stack, top to bottom, with a newline after each item printed (this prints the first 3 lines of the output, 2 / 0 / 0 /)

z Pushes the current size of the stack (3) onto the stack.
Stack: (top) 3 2 0 0

f Prints the stack, top to bottom, with a newline after each item printed (this prints the next 4 lines of the output, 3 / 2 / 0 / 0 /)

d Duplicates the item at the top of the stack.
Stack: (top) 3 3 2 0 0

f Prints the stack, top to bottom, with a newline after each item printed (this prints the final 5 lines of the output, 3 / 3 / 2 / 0 / 0 /)

Jak działa drugi?
tamalfarfetchd

@therealfarfetchd Dodałem wyjaśnienie do odpowiedzi.
Mitchell Spector,

Cholera, prąd stały jest znacznie potężniejszy niż myślałem. Dobra robota!
tamalfarfetchd

@therealfarfetchd Thanks. Lubię dc. Przy okazji, w wyjaśnieniu było kilka literówek, które właśnie naprawiłem.
Mitchell Spector

5

LOLCODE , 273 240 ( 360 286) bajtów

HAI 1.2
I HAS A U
IM IN YR M UPPIN YR Q TIL BOTH SAEM Q 1
VISIBLE "Y SUB.EK"
IM OUTTA YR M
IM IN YR T UPPIN YR Q TIL BOTH SAEM Q 2
VISIBLE "Y SUB.EK"
IM OUTTA YR T
IM IN YR X UPPIN YR Q TIL BOTH SAEM Q 12
VISIBLE "IM"
IM OUTTA YR X
KTHXBYE

Zwróć uwagę na nową linię i wypróbuj ją online . Druga linia była mniej więcej dowolna i może być zastąpiona krótszym poleceniem, ale właśnie nauczyłem się LOLCODE dla tej układanki. Ponieważ numer wersji jest wymagany w pierwszym wierszu, użyłem liczb, aby dodać pętle o długości 1, 2 i 0 mod 3, aby zapewnić wydrukowanie odpowiedniej liczby znaków. Z tego po prostu policzyłem każdą postać (za pomocą tego narzędzia ). Jeśli pojawił się 0 mod 3 razy, nie było wymagane żadne działanie. Gdyby pojawił się 1 mod 3 razy, został dodany do pętli 1- i 2, aby pojawił się trzy razy na wyjściu. Jeśli pojawił się 2 mod 3 razy, postać została dodana do pętli 12. EDYCJA: Zastępując pierwszyVISIBLE z zadaniem (wciąż bezużytecznym, ale wymagającym 12 zamiast 11 nowych linii) udało mi się odciąć 33 bajty.

Wyjście (60 bajtów):

Y SUB.EK
Y SUB.EK
Y SUB.EK
IM
IM
IM
IM
IM
IM
IM
IM
IM
IM
IM
IM

Zwróć uwagę na nową linię.

Zaletą tego rozwiązania w porównaniu z innymi odpowiedziami jest to, że wyjściem można łatwo manipulować, aby uzyskać dość znaczący tekst. Przykład (286 bajtów z końcową nową linią):

HAI 1.2
I HAS A U
IM IN YR MW UPPIN YR Q TIL BOTH SAEM Q 1
VISIBLE "YO SUB. EEEEK!"
IM OUTTA YR MW
IM IN YR STA UPPIN YR Q TIL BOTH SAEM Q 2
VISIBLE "YO SUB. EEEEK!"
IM OUTTA YR STA
IM IN YR XURG UPPIN YR Q TIL BOTH SAEM Q 12
VISIBLE "IMO U R SWAG! "
IM OUTTA YR XURG
KTHXBYE

Wypróbuj online. Wyjście (222 bajty z końcowym nowym wierszem):

YO SUB. EEEEK!
YO SUB. EEEEK!
YO SUB. EEEEK!
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 
IMO U R SWAG! 

Niestety, nie jestem tak dobry z anagramami, jak myślałem:)


1
Witamy na stronie!
DJMcMayhem

@DJMcMayhem Dzięki. Coś muszę zrobić, aby LOLCODE było tak ładnym automatycznym linkowaniem, jak skopiowałem z innych postów? (styl # [język]) Link do kodu źródłowego znajduje się w odpowiedzi.
SK19

Najprostszym sposobem jest skorzystanie z menu linków i wybranie (lub skopiowanie) opcji „Code Golf Submission” po umieszczeniu programu w TIO. To daje szablon do nowego postu. Skopiowałem część, której wydawało się, że tam brakuje.
Ørjan Johansen

5

MUSZLA

żartować :) ( 9 bajtów )

ls;ls;ls;

lub poważniej ( 24 bajty )

sed s/./sed.g./g <<< edg

Wynik:

sed.g.sed.g.sed.g.

5

PHP, 24 bajty

<?=111?><?=222?><?=333?>

1
Co to wyjście? Jak to działa?
DJMcMayhem

Wykorzystuje skrót PHP <?wraz z natychmiastową echoinstrukcją, <?=aby wyświetlić wynik 123 3 razy.
junkfoodjunkie

Krótsza wersja, którą właśnie edytowałeś, jest nieprawidłowa, ponieważ <= ?>znaki nie pojawiają się wielokrotność 3 razy.
DJMcMayhem

Ach, racja, wiedziałem, że istniał powód, dla którego oryginalna wersja była taka, jaka była - całkowicie zgubiłem ten wymóg - zmienię go z powrotem.
junkfoodjunkie


4

Japt, 9 bajtów

000OoOoOo

Wydruki undefinedundefinedundefined. Przetestuj online!

Wyjaśnienie

Ten kod jest transpilowany do następującego JavaScript:

000,O.o(O.o(O.o()))

O.ojest funkcją, która generuje coś bez końcowego znaku nowej linii. Gdy nie podano argumentu, drukuje undefined, co można uznać za błąd, ale przydaje się tutaj. Zwraca również undefined, więc wszystkie trzy połączenia są drukowane undefined.

Jestem pewien, że istnieje wiele innych sposobów, aby to zrobić ...


1
O_o Interesujące :)
geisterfurz007

4

05AB1E , 9 bajtów (myślę, że można powiedzieć, że to był fragment PI)

-0 bajtów dzięki Emigna / ETHProductions, poprawiło rozwiązanie.

žqžqžq???

Alternatywne wersje:

ž[g-Q]ž[g-Q]ž[g-Q]???

[g-Q] - Można tu umieścić dowolną literę aQ, o ile wszystkie się zgadzają (patrz poniżej).

Wypróbuj online!

Wyjaśniono:

PI,PI,PI,SORT,JOIN,SORT,JOIN,SORT,JOIN.

Wynik:

...111111222333333333444555555555666777888999999999

Powodem jest to, że ma tylko 9 bajtów, ponieważ nie potrzebujesz tego rodzaju, po prostu wstawiłem je, aby pomóc w zilustrowaniu.

Wynik bez {kodu:

3.1415926535897933.1415926535897933.141592653589793


Alternatywne wersje:

Zamiast PI można użyć następujących poleceń:

ž 23  > žg       push current year
        žh       push [0-9]
        ži       push [a-zA-Z]
        žj       push [a-zA-Z0-9_]
        žk       push [z-aZ-A]
        žl       push [z-aZ-A9-0_]
        žm       push [9-0]
        žn       push [A-Za-z]
        žo       push [Z-Az-a]
        žp       push [Z-A]
        žq       push pi
        žr       push e
        žu       push ()<>[]{}
        žy       push 128
        žz       push 256
        žA       push 512
        žB       push 1024
        žC       push 2048
        žD       push 4096
        žE       push 8192
        žF       push 16384
        žG       push 32768
        žH       push 65536
        žI       push 2147483648
        žJ       push 4294967296
        žK       push [a-zA-Z0-9]
        žL       push [z-aZ-A9-0]
        žM       push aeiou
        žN       push bcdfghjklmnpqrstvwxyz
        žO       push aeiouy
        žP       push bcdfghjklmnpqrstvwxz
        žQ       push printable ASCII character set (32-128)

2
Wyjdź po kalambur; za lewę, ale weź jedną :)
geisterfurz007

Niezłe! Nie sądzę žv, žwlub žxsą ważne, ponieważ każdy z nich ma tylko 2 różne cyfry.
ETHproductions

Hmm, jaki jest sens klas postaci do tyłu?
ETHproductions

@ETHproductions ahhh, zapomniałem at least 3, na początku było tylko PI, kiedy to napisałem. Co rozumiesz przez klasę znaków wstecz?
Magic Octopus Urn

1
Pamiętaj, że jest to poprawne tylko wtedy, gdy nie policzysz nowego wiersza, który jest domyślnie wydrukowany. Można to łatwo naprawić, zastępując JJJgo ???jednak.
Emigna

4

Cubix , 12 bajtów

Naprawdę nudna odpowiedź. Trzy wyjścia 10a następnie nowej linii

N@N@NOoOoOo@

Wypróbuj online! Mapy do kostki

    N @
    N @
N O o O o O o @
. . . . . . . .
    . .
    . .

NPcha 10 do stosu
Oox3 Wyjścia 10 i nowa linia
@zatrzymuje program

Inicjał N@N@nie został trafiony.


Liczę 34 spacje: /
SK19

@ SK19 Kod jest N@N@NOoOoOo@i nie zawiera spacji.
MickyT,

Ach, dobra, myślałem, że sześcian też musi spełnić ten warunek
SK19

4

Pepe , 24 bajty

rEeEEeeEEErreEErreEEreEE

Wypróbuj online!

Program zawiera 6 r, 6 e i 12 e.

Wyjaśnienie:

rEeEEeeEEErreEErreEEreEE # full program

rEeEEeeEEE               # push '103' to the stack
          rreEErreEE     # output as int (r flag: preserve)
                    reEE # output as int

Wynik:

103103103

3

V , 9 bajtów

12i12i12i

Wypróbuj online!

Wysyła 12i24 razy:

12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i12i

Vim, 12 bajtów

12i12i12i<ESC><ESC><ESC>

Wysyła to samo co odpowiedź V.



3

Befunge 93 , 9 bajtów

...,,,@@@

TIO

Wydruki 0 0 0(końcowe spacje, a następnie 3 bajty puste)

Ponieważ stos Befunge jest wypełniony 0s, możemy wydrukować zarówno znak ASCII z tą wartością, jak i samą liczbę całkowitą. Ponieważ Befunge automatycznie drukuje spację po liczbie całkowitej, pozostały nam 3 różne znaki.

.wypisuje 0(końcowe miejsce), ,wypisuje bajt zerowy i @kończy program

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.