Dane wyjściowe mają taką samą liczbę cyfr pi, jak długość kodu


9

Wyzwanie polega na wydrukowaniu xcyfr liczby pi, gdzie xjest długość kodu.

Przykłady:

Source code (length) -> output
foo!        (4)         3.141
foobar      (6)         3.14159
kinda long  (10)        3.141592653
+++++       (5)         3.1415
123456789   (9)         3.14159265

Możesz użyć do określenia liczby cyfr, które musisz wydrukować. Zauważ, że przecinek dziesiętny nie jest liczony jako cyfra pi - więc kod o długości 3 powinien mieć wynik o długości 4.floor(π/10 * 10code_length) / 10code_length - 13.14

Zasady:

  • Długość kodu musi być większa niż trzy znaki.
  • Nie możesz używać żadnych standardowych luk.
  • Możesz użyć dowolnej standardowej dozwolonej metody wyjściowej.
  • Nie możesz odczytać źródła, aby określić długość kodu.
  • Nie możesz używać wbudowanej stałej pi.
  • Pi musi być całkowicie dokładne i nie przybliżone.
  • Konieczny jest przecinek dziesiętny na wyjściu. Jeśli wybierzesz wyjście za pomocą wartości zwracanej, musisz zwrócić liczbę całkowitą zmiennoprzecinkową.
  • Celem tego wyzwania jest znalezienie najkrótszego rozwiązania w każdym języku, a nie najkrótszego języka dla tego rozwiązania. Nie obawiaj się opublikować rozwiązania w języku, gdy krótsze rozwiązanie zostanie opublikowane w tym samym języku, o ile Twoje rozwiązanie używa innej metody.

... więc czy byłoby to ważne czy nie?
Jonathan Allan

(edytuj ^ to nawet (zaokrąglenie))
Jonathan Allan

„Długość kodu” ← w bajtach lub znakach?
Lynn,

@Lynn Bytes, jak zwykle.
MD XF

Jest tylko 3dozwolone?
NoOneIsHere

Odpowiedzi:


3

Japt , 9 4 bajty

Tak krótko, jak to tylko możliwe :)

Obejmuje niedrukowalne (przesunięcie wiersza, kod znaków 141) po #.

3.#

Sprawdź to

W Japt każdy następujący znak #jest konwertowany na jego kod znakowy i dołączany do dowolnych cyfr lub miejsc dziesiętnych, które mogą go poprzedzać, w tym przypadku3.




6

VBA (Excel), 15 bajtów

MsgBox 4*Atn(1)

Wyjście: 3,14159265358979

Myślę, że to niedopuszczalne, ponieważ grałem w golfa, aby dopasować długość PI. Jego długość bez golfa wynosi 17 bajtów. RE:


1
Wygląda na to, że nie zostałeś jeszcze powitany, więc witaj na stronie!
MD XF

Och, dziękuję, proszę pana! : D
remoel

Czy nie jest Atnarcus tangens? Nie jestem pewien, czy jest to dozwolone ... pytać OP
JungHwan Min

Myślałem, że OP odnosi się tylko do wbudowanego PI. Mój błąd.
remoel

5

Galaretka , 6 bajtów

3;⁽4ƒṾ

Wypróbuj online!

Drukuje 3,14159z dopuszczonym „europejskiej”, separator dziesiętny ,.

W jaki sposób?

3;⁽4ƒṾ - Main link: no arguments
3      - literal 3                3
  ⁽4ƒ  - base 250 literal 14159   14159
 ;     - concatenate              [3,14159]
     Ṿ - unevaluate               ['3', ',', '1', '4', '1', '5', '9']
       - implicit print           3,14159

1
Ta lista cyfr wygląda dziwnie. Myślę, że jest tam dodatek ,'.
Jonathan Frech,

1
Możesz zrobić -ÆAær5i używać .zamiast ,, ale wtedy byłoby to to samo, co moje rozwiązanie Jelly.
Zacharý



4

Desmos , 130 bajtów

f\left(\right)=\frac{\operatorname{floor}\left(10^{128}\cdot 4\sum_{k=1}^{9^9}\frac{\left(-1\right)^{k+1}}{2k-1}\right)}{10^{128}}

Kod źródłowy tego (do którego można uzyskać dostęp poprzez kopiowanie i wklejanie wewnątrz i na zewnątrz Desmos) nie jest optymalny, gdy jest generowany za pomocą edytora Desmos, więc tam, gdzie to możliwe, zapisano kilka bajtów białych znaków.

Definiuje to funkcję, fktóra nie przyjmuje argumentów zwracających pi, obliczonych za pomocą Sekwencji Gregory'ego na k=9^9 (Nie mogę potwierdzić, że jest wystarczająco dokładna, ale uważam, że tak, można ją zwiększyć dokładnością przy większej wartości k ) , następnie wyrzuca wynik do 128miejsc po przecinku, co obok 3.długości jest kodem źródłowym.

Wypróbuj online!


Jak rzeczywiście widzi się rezultat - widzę tylko 3.14159265617, czy patrzę w niewłaściwe miejsce; czy muszę nacisnąć przycisk?
Jonathan Allan

Desmos domyślnie nie drukuje do tylu miejsc dziesiętnych, ile podano, ale wartość powinna być dokładna.
ATaco

1
Jest to rozczarowujące, ponieważ wyzwaniem jest „wydrukować ...”
Jonathan Allan

1
„Punkt dziesiętny na wyjściu jest konieczny. Jeśli zdecydujesz się na wyjście za pomocą wartości zwracanej, musisz zwrócić liczbę całkowitą zmiennoprzecinkową.” co sprawia, że ​​jest to ważne.
ATaco,

Wydaje mi się, że intencją tego stwierdzenia nie było dopuszczenie mniejszej precyzji, ale zapewnienie separatora dziesiętnego. Nie uważam, że twoja odpowiedź jest zła.
Jonathan Allan,




3

Neim , 5 bajtów

3FBρσ

Wyjaśnienie:

3      Push 3
 FB    F pushes 45, B converts it into a character code, '.'
   ρ   Push 14
    σ  Push 15
Implicitly concatenate and print stack

Wypróbuj online!


3

APL, 6 bajtów

10○⍟-1

Bierze wyimaginowaną część ln (-1).

Wypróbuj online!


Cześć, witaj z powrotem @Uriel! Fajnie, nie myślałem o czymś takim (z logami liczb ujemnych), niezła robota!
Zacharý

@ Zacharý dzięki, właśnie zrezygnowałem z wizyty i nie mogłem nie odpowiedzieć na to pytanie: P
Uriel

2

J , 16 bajtów

17j15":4*_3 o.1:

Wypróbuj online!

Podobne do odpowiedzi VBA. Wyjścia: 3.141592653589793.


„Nie możesz używać wbudowanego makra lub stałej do określenia pi.” Zabawne, to twój komentarz
Leaky Nun

Twój wynik to 17 bajtów, a nie 16.
ATaco

1
@ATaco dokładnie, to 16 cyfr
tylko ASCII

@LeakyNun tak nie jest. _3 o.1oblicza atan (1). Jak zapewne wiesz, jestem w pełni świadomy zasad.
Conor O'Brien

2

Math.JS , 17 bajtów.

     log(-1,e).im

To 5 wiodących pól

Oblicza to do 15 miejsc po przecinku i domyślnie drukuje.

Wypróbuj online!


Cóż, technicznie rzecz biorąc, oblicza to urojoną część ln(-1), ale ponieważ jest to liczba tylko urojona, jest to równoważne z dzieleniem przez i.
Zacharý

2

05AB1E , 11 bajtów

3•∊&SK•)'.ý

Wypróbuj online!

COMMAND     # CURRENT STACK         | EXPLANATION
------------#-----------------------+-----------------------------------
3           # [3]                   | Push 3.
 •∊&SK•     # [3, 1415926535]       | Push compressed base-255 number 1415926535.
       )    # [[3,1415926535]]      | Wrap the 2 to an array.
        '.  # [[3,1415926535],'.']  | Push a decimal point.
          ý # ['3.1415926535']      | Join 3 and 1415926535 with a decimal point.

KORZYSTANIE Z WBUDOWANYCH:

05AB1E , 4 bajty

žq5£

Wypróbuj online!


3žs z jakiegoś powodu nie działa ...


@ Zacharý, czy coś przeoczyłem? Dlaczego to specjalne xD?
Magic Octopus Urn

Jest w mojej nazwie użytkownika, a także czy możesz dodać wyjaśnienie?
Zacharý

@ Zacharý HA! Mój mózg przechodził wszystkie możliwe śmieszne dowcipy związane z PPCG, które były puste. Przemyślam bzdury.
Magic Octopus Urn

@ Zacharý również dodane.
Magic Octopus Urn

Jeśli mój miał ukrytą IO, nie będzie w żaden sposób pokonać E3., jestem zła na mojego ja teraz: P.
Zacharý

2

ForceLang , 269 bajtów

set S 0x5F258E476FC1B3B5571012206C637089460E41E814CB071E61431B5F0671F551D18D2C5D2D3A2565E408C6DE8D753F595B6E9979C3866D1C9965008DCFB02E3BD11D21DFFAF17978F05C8BBACF55A5ED5E90B1D8CAD8736AA4B728EB342B453F86353DB371D322B6A98613BC5CCB00AC2.mult 1e-270
io.write S.toString 268

Link do języka przynajmniej na github .
Jonathan Allan,

2

MATL , 9 8 bajtów

-1X;V9:)

Wypróbuj online!

Wyjaśnienie:

-1      % number literal
X;      % inverse cosine (radians), giving pi
V       % convert to string
9       % specify precision
:)      % keep first 9 characters - 8 digits of precision

Oszczędność jednego bajtu dzięki Luisowi Mendo!


1

Galaretka , 6 bajtów

-ÆAær5

Wypróbuj online!

Stosuje inne podejście niż inne odpowiedzi na żelki.

W jaki sposób?

-ÆAjest odwrotnym cosinusem -1(który jest pi), ær5pobiera potrzebną sekcję. Udało się, więc zaokrąglenie jest w tym przypadku równoważne obcięciu



1

Perl 5, 40 bajtów

}{$\=$\/~(2*$_)*~$_+2for-130..-2

Wymaga opcji wiersza poleceń -pMbignum, liczonej jako 8.

Przykładowe użycie:

$ perl -pMbignum test.pl < /dev/null
3.141592653589793238462643383279502884197

Przepraszam za brak linku TIO, wydaje się, że nie obsługuje bignum(lub niezrównanego otwierającego nawiasu ...).


1

MY , 7 bajtów

’2ō"8↑↵

Wypróbuj online!

W jaki sposób?

  • , zmniejsz górną część stosu ( 0jest wyskakujący, jeśli jest pusty, co powoduje utworzenie stosu [-1]). (Ten sam symbol co galaretka)
  • 2, pchnij 2.
  • ō, ponieważ górna część stosu to dwa, odrzuć 2, pop n, a następnie pchnij acos(n)(w radianach daje to pi, ten symbol ma oznak ujemny na górze. o(dla normalnego wyzwalania) pochodzi z APL).
  • ", pop górny element stosu i popchnij go jako ciąg.
  • 8, Pchać 8.
  • , pop anastępnie bpopchnijb[:a] (jest to kolejny symbol pobrany z APL).
  • , wyjście z nową linią (WYJŚCIE <- STOSOWANIE).

Następnie dodaj niejawne dane wyjściowe: P
MD XF

Pozostaję wierny naturze MOJEGO, mógłbym stworzyć ulepszoną wersję z faktyczną składnią i zdecydowanie z niejawnym wyjściem
Zacharý 17.09.17

1

RPL (HP48), 86,5 bajtów, 87 cyfr [Czy to się liczy?]

« GROB 8 43
14159265358979323846264338327950288419716939937510582097494459230781640628620899862803
→STR 9 OVER SIZE SUB 2 "." REPL »

GROB jest słowem kluczowym graficznym. Dwie kolejne liczby to szerokość i wysokość. Następujące cyfry szesnastkowe to bitmapy. To 1 bajt pamięci na każde 2 cyfry plus metadane obrazu.

Pusty program « »zajmuje 10 bajtów. Polecenie zajmuje 2,5 bajta. Liczba zmiennoprzecinkowa zajmuje 10,5 bajtów, ale jeśli jest równa jednocyfrowej liczbie całkowitej, może zająć 2,5 bajta.

HP48 przechowuje 4 zamiast 8 bitów w każdej lokalizacji pamięci, więc bajt zajmuje 2 kolejne lokalizacje (low endian). Często używa się 20-bitowych fragmentów i zajmują one 2,5 bajta (nie 3).





0

Excel VBA, 16 bajtów

Anonimowe funkcje bezpośredniego okna VBE, które nie pobierają żadnych danych wejściowych ani wyjściowych do żadnych STDOUT programu Excel VBA

Każda linia reprezentuje osobną funkcję, która zwraca Pi o długości 16

?Mid(4*Atn(1),1)
?Str([Acos(-1)])
Debug.?4*Atn(1);
MsgBox[Acos(-1)]
[A1]="=ACOS(-1)"



0

TI-BASIC, 7 bajtów

round(4tan⁻¹(1),6

round(2sin⁻¹(1),6

round(cos⁻¹(-1),6

Te trzy oświadczenia zostaną wydrukowane 3.141593.


Uwaga: TI-BASIC jest językiem tokenizowanym. Liczba znaków nie jest równa liczbie bajtów.

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.