W oczekiwaniu na tymczasowe wyłączenie MathJax, renderowany MathJax w tym pytaniu został zastąpiony obrazami. Nadal możesz publikować odpowiedzi, ale musisz wyświetlić renderowany MathJax na innej stronie .
PPCG właśnie dostało MathJax ! Oznacza to, że możemy teraz łatwo włączać dobrze sformatowane formuły matematyczne do postów. ( Poręczny samouczek MathJax. )
Na przykład tutaj jest złoty stosunek wyrażony jako nieskończona ciągła część :
Kod MathJax dla tego równania to
$$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}}$$
Można to znaleźć, klikając prawym przyciskiem myszy formułę i postępując zgodnie z poleceniami Pokaż matematykę jako → TeX .
Te $$
środki to jest wyświetlane na własną rękę w środku strony zamiast inline. Użyj singla $
do wstawiania.
Wyzwanie
Napisz program, który przyjmuje nieujemną liczbę całkowitą n i wyprowadza kod MathJax dla tylu „kroków” ciągłego ułamka dla złotego podziału.
Aby zachować standard dla wszystkich odpowiedzi, musisz użyć tej dokładnej składni MathJax:
Dla n = 0 wynikiem musi być
$$\varphi=1+\dots$$
.
Który jest renderowany jako:Dla n = 1 wynikiem musi być
$$\varphi=1+\cfrac1{1+\ddots}$$
.
Który jest renderowany jako:Dla n = 2 wyjściem musi być
$$\varphi=1+\cfrac1{1+\cfrac1{1+\ddots}}$$
.
Który jest renderowany jako:Dla n = 3 wyjściem musi być
$$\varphi=1+\cfrac1{1+\cfrac1{1+\cfrac1{1+\ddots}}}$$
.
Który jest renderowany jako:
Ten wzór trwa dla większej liczby n. Można powiedzieć, że n reprezentuje liczbę linii podziału w równaniu.
Notatki
\cfrac
jest używany zamiast bardziej powszechnego\frac
.\dots
jest używany zamiast\ddots
dla n = 0.- Weź dane wejściowe ze standardowego wejścia lub wiersza poleceń.
- Wyjście na standardowe wyjście (z opcjonalnym końcowym znakiem nowej linii).
- Alternatywnie możesz napisać funkcję, która przyjmuje n jako liczbę całkowitą i zwraca kod MathJax jako ciąg znaków (lub nadal go drukuje).
Punktacja
Najmniejsze przesłanie w bajtach wygrywa. Tiebreaker przechodzi do wcześniejszego zgłoszenia.
źródło
Uncaught ReferenceError: textbox is not defined
Odpowiedzi:
CJam,
5150 bajtówObjaśnienie kodu:
Kilka przykładów:
N = 0
N = 4
N = 15
AKTUALIZACJA - 1 bajt zapisany dzięki Sp3000!
Wypróbuj online tutaj
źródło
"$$\varphi=1+""\cfrac1{1+"ri:R*'\"ddots"R!>'}R*'$_
\v
do\\v
.Python,
706867 bajtówDefiniuje to anonimową funkcję, która po prostu wykorzystuje proste mnożenie i formatowanie łańcucha.
(Dzięki @xnor za wskazanie, że
\\c
można to po prostu zapisać jako\c
, ponieważc
nie można go uniknąć. Niestety nie jest to prawdą\\v
, ponieważ\v
jest to ASCII 11.)Poprzednie próby:
źródło
> <> ,
8986 + 3 = 89 bajtówUruchom z
-v
flagą, npZaskakujące jest to, że> <> nie robi się tutaj zbyt źle, ponieważ możemy naśladować mnożenie ciągów, mając licznik, który zmniejszamy przy każdej iteracji.
(-3 bajty dzięki @randomra)
źródło
Siatkówka , 160 + 7 = 167 bajtów
; +
(\d*)#(?:(((((((((9)|8)|7)|6)|5)|4)|3)|2)|1)|0) $1$1$1$1$1$1$1$1$1$1$2$3$4$5$6$7$8$9$10# ;
#Każda linia przechodzi do osobnego pliku źródłowego, więc dodałem 1 bajt do każdego pliku po pierwszym . Jednak dla wygody Retina obsługuje teraz także
-s
flagę wiersza poleceń, która pozwala umieścić to wszystko w jednym pliku (w takim przypadku znaki nowej linii są traktowane jako separatory plików).Największa część kodu (98 bajtów) służy do konwersji danych wejściowych z dziesiętnego na jednoargumentowy (pliki od 3 do 6). Podstawową ideą kodu jest otaczanie danych wejściowych
$$\varphi=1+\dots...$$
, następnie przekształcanie danych wejściowych na jednoargumentowe, a następnie rozwijanie\dotsN
lub\ddotsN
przechodzenie do następnego poziomu ciągłego ułamka (redukującN
doN-1
).źródło
Julia,
7673 bajtówTo tworzy funkcję lambda, która przyjmuje jedną liczbę całkowitą jako dane wejściowe i zwraca MathJax jako ciąg znaków. Aby to nazwać, nadaj mu nazwę, np
f=n->...
.Niestety, zarówno odwrotne ukośniki, jak i znaki dolara muszą zostać usunięte w ciągach Julii, ponieważ oba mają specjalne znaczenie. Łączenie łańcuchów odbywa się za pomocą
*
i powtarzania łańcuchów za pomocą^
.Przykłady:
Sugestie są jak zawsze mile widziane!
Edycja: Zapisano 3 bajty dzięki plannapus!
źródło
"d"^(n>0)
zamiast(n>0?"d":"")
uczynić go krótszym."string"^0
to uzasadnione.Element, 63 znaki
To najprostsze rozwiązanie. Niestety duża liczba symboli na wyjściu powoduje znaczny wzrost długości programu (umieszczenie ciągów w programie bezpośrednio powoduje, że symbole wykonują operacje). Jestem pewien, że jest miejsce na grę w golfa, ale nie mam teraz więcej czasu.
Ponieważ ten język jest nadal stosunkowo nieznany, oto link do tłumacza napisanego w Perlu.
źródło
T-SQL,
229227138Minęło trochę czasu, odkąd zrobiłem odpowiedź SQL i jak zawsze jest to bardzo szczegółowe. Edytuj Oczywiście skomplikowałem to i nie potrzebowałem w ogóle zapytania rekurencyjnego.
Oryginalny
Spowoduje to utworzenie wbudowanej funkcji tabeli, która korzysta z zapytania rekurencyjnego w celu umieszczenia dodatkowej dla
cfrac1{1+\
każdej iteracji. Zmiana kropek na kropki była kosztowna, ale uratowała parę pozbywających się zamiany :). Trzeba też rzucić oryginalny ciąg jako „VARCHAR (MAX)”.Jest używany w następujący sposób SQLFiddle :
źródło
Rubinowy,
76757170 bajtówWydaje się to podejrzanie proste, więc proszę dać mi znać, jeśli gdzieś coś pomieszałem.
Nawiasem mówiąc, jest to pierwsza rzecz, jaką kiedykolwiek napisałem w Ruby - szukałem języka, który wspiera powtarzanie ciągów przez mnożenie, a Ruby chyba to zrobiła.
Do zastosowania w ten sposób:
źródło
J, 60 bajtów
Stosowanie:
Metoda:
Sznurek
'$$\varphi=1+\ cfrac1{1+\ d dots } $$ '
jest cięty w odstępach, a części są powtarzane1 n signum(n) 1 n 1
razy, a następnie te części są łączone.Wypróbuj online tutaj.
źródło
R,
9390Podobnie jak inne odpowiedzi. Dzięki @plannapus za wskazówkę dotyczącą skanowania.
cat
użyte zamiast wklej0, ponieważ wynik byłby\\
raczej wynikiem niż\
.W użyciu
źródło
n
przy pierwszym wystąpieniu użytkownik wpisze jako standard, możesz zapisać niektóre znaki:cat("$$\\varphi=1+\\",rep("cfrac1{1+\\",n<-scan()),if(n)"d","dots",rep("}",n),"$$",sep="")
JavaScript,
11410910685 bajtów dzięki George'owi ReithowiTo mój pierwszy wpis w konkursie codegolf! Powiedz mi, jak poprawić.
Poprzedni wpis (106 bajtów):
Poprzedni wpis (109 bajtów):
Poprzedni wpis (114 bajtów):
Wklej do konsoli przeglądarki i zadzwoń,
f(n)
gdzien
jest liczba „kroków”.Kod uproszczony :
źródło
Pyth - 52 bajty
Proste podejście w Pyth, prawie skradzione z rozwiązania Python @ Sp3000. Używa operatora formatowania łańcucha
%
.Wypróbuj online tutaj .
źródło
Pyth, 50 bajtów
źródło
JavaScript (ES6), 76
80Częściowo rekurencyjne. Single / double d jest najbardziej denerwującą częścią.
Przetestuj w konsoli Firefox / FireBug
źródło
Python,
90116ponieważ najskuteczniejsze rozwiązanie zostało już opublikowane wiele razy, zamiast tego wybieram zamianę łańcucha
Edit: cholera, darowany
dots
zamiastddots
zan=0
, teraz rekurencyjne rozwiązanie z dodatkową klauzulą zaatakowana na to zbyt brzydki konkurować.źródło
n=0
specjalnego przypadku (kropki zamiast kropek).Haskell, 86
Zasadniczo takie samo podejście jak wszystkie rozwiązania tutaj.
drop(0^n)"ddots"
jest jednak słodki!źródło