/* Configuration */
var QUESTION_ID = 85; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 3; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
else console.log(body);
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body {
text-align: left !important;
display: block !important;
}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/codegolf/all.css?v=ffb5d0584c5f">
<div id="language-list">
<h2>Shortest Solution by Language</h2>
<table class="language-list">
<thead>
<tr><td>Language</td><td>User</td><td>Score</td></tr>
</thead>
<tbody id="languages">
</tbody>
</table>
</div>
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
^2
sebagai pengganti0,1
. +1|^2,*+*...*
, yang merupakan jumlah byte yang sama dengan0,1,*+*...*
.Brainfuck, 22 pukulan
Menghasilkan urutan Fibonacci secara bertahap bergerak melintasi pita memori.
sumber
+[[<+>->+>+<<]>]
+[.[>+>+<<-]>]
Haskell,
171514 karakterCobalah online!
sumber
f=0:scanl(+)1 f
?f@(_:x)=0:1:zipWith(+)f x
! Harus mengingatnya.f=0:scanl(+)1f
.C # 4, 58 byte
Streaming (69; 65 jika diketik dengan lemah
IEnumerable
)(Dengan asumsi
using
arahan untukSystem.Collections.Generic
.)Nilai tunggal (58)
sumber
n
adalahuint
,n==0
dapat disingkat menjadin<1
. Dan stream dapat menghemat beberapa karakter dengan membuang ruang setelah tipe generik dan mendeklarasikanx
dalam cakupan yang lebih luas dari yang diperlukan. Bahkan, paritx
seluruhnya:n+=c;c=n-c;
!n
bekerja, maka seharusnya hanyan
jika Anda membalik kondisional.GolfScript, 12
Sekarang, hanya 12 karakter!
sumber
> <> - 15 karakter
sumber
0:nao1v LF a+@:n:<o
jika Anda mau. Memberikan 15 :) Bahkan, ini juga membuat output sedikit lebih mudah dibaca ...01r:nao$:@+$r
J, 10 karakter
Menggunakan perhitungan koefisien deret Taylor bawaan jadi mungkin sedikit curang. Belajar di sini .
sumber
(q:^-^:p) 6
adalah64 729
tempat p berada. J mungkin bagus untuk teka - teki. :)(<:^-^:>) 4
adalah81
dan<:^-^:> 4
adalah53.5982
.+/@:!&i.-
menggunakan 9 byte.Segi enam ,
181412Terima kasih Martin untuk 6 byte!
Diperluas:
Cobalah online
Tua, jawab. Ini dibiarkan masuk karena gambar dan penjelasannya mungkin bermanfaat bagi pengguna Hexagony baru.
Diperluas:
Ini mencetak urutan Fibonacci yang dipisahkan oleh baris baru.
Cobalah online! Namun berhati-hatilah, penerjemah online tidak terlalu menyukai hasil yang tidak terbatas.
Penjelasan
Ada dua "subrutin" untuk program ini, masing-masing dijalankan oleh salah satu dari dua IP yang digunakan. Rutin pertama mencetak baris baru, dan yang kedua melakukan perhitungan dan output Fibonacci.
Subrutin pertama dimulai pada baris pertama dan bergerak dari kiri ke kanan sepanjang waktu. Pertama mencetak nilai pada penunjuk memori (diinisialisasi ke nol), dan kemudian meningkatkan nilai pada penunjuk memori oleh
1
. Setelah no-op, IP melompat ke baris ketiga yang pertama-tama beralih ke sel memori lain, kemudian mencetak baris baru. Karena baris baru memiliki nilai positif (nilainya 10), kode akan selalu melompat ke baris kelima, berikutnya. Baris kelima mengembalikan penunjuk memori ke nomor Fibonacci kami dan kemudian beralih ke subrutin lainnya. Ketika kami kembali dari subrutin ini, IP akan melompat kembali ke baris ketiga, setelah menjalankan no-op.Subrutin kedua dimulai di sudut kanan atas dan mulai bergerak ke Tenggara. Setelah no-op, kita terpental untuk melakukan perjalanan ke Barat di sepanjang baris kedua. Baris ini mencetak angka Fibonacci saat ini, sebelum memindahkan penunjuk memori ke lokasi berikutnya. Kemudian IP melompat ke baris keempat, di mana ia menghitung angka Fibonacci berikutnya menggunakan dua sebelumnya. Ia kemudian memberikan kontrol kembali ke subrutin pertama, tetapi ketika ia mendapatkan kembali kendali atas program, ia melanjutkan hingga bertemu lompatan, di mana ia memantul di atas cermin yang awalnya digunakan untuk mengarahkannya ke Barat, saat ia kembali ke baris kedua.
Gambar-gambar Cantik Pendahuluan!
Sisi kiri gambar adalah program, sisi kanan mewakili memori. Kotak biru adalah IP pertama, dan kedua IP menunjuk pada instruksi selanjutnya yang akan dieksekusi.
Catatan: Gambar mungkin hanya tampak cantik bagi orang-orang yang memiliki keterampilan yang sama terbatasnya dengan program pengeditan gambar: PI akan menambahkan setidaknya 2 iterasi lebih banyak sehingga penggunaan
*
operator menjadi lebih jelas.Catatan 2: Saya hanya melihat jawaban alephalpha setelah menulis sebagian besar dari ini, saya pikir itu masih berharga karena pemisahan, tetapi bagian Fibonacci sebenarnya dari program kami sangat mirip. Selain itu, ini adalah program Hexagony terkecil yang saya lihat menggunakan lebih dari satu IP, jadi saya pikir mungkin lebih baik untuk tetap menyimpannya: P
sumber
SAPI , 108
sumber
Python 2, 34 byte
Python, menggunakan rekursi ... inilah StackOverflow!
sumber
Jelly , 3 byte
Cobalah online!
Bagaimana itu bekerja
‡
¡
mengintip dua tautan ke kiri. Karena hanya ada satu, itu harus menjadi badan loop. Oleh karena itu, angka dibaca dari input. Karena tidak ada argumen baris perintah, angka itu dibaca dari STDIN.sumber
Golfscript - nomor tunggal - 12/11/10
12 karakter untuk mengambil input dari stdin:
11 karakter untuk input sudah ada di tumpukan:
10 karakter untuk mendefinisikan 1 lebih lanjut sebagai angka Fibonacci 0:
sumber
~
dan Anda memiliki 11 karakter yang mengambiln
tumpukan dan meninggalkanF_n
tumpukan.Rubi
29 27 2524 KarakterSunting: menjadikannya loop tak terbatas. ;)
sumber
b=a+a=b
ada palindrome? :)b=a+a=b
kerjanya? Sepertinya tidak bisa membungkus kepalaku di sekitarnya.newb=olda+(a=oldb)
loop
:p 1,a=b=1;loop{p b=a+a=b}
Mathematica, 9 karakter
Jika fungsi bawaan tidak diizinkan, berikut ini adalah solusi eksplisit:
Mathematica,
333231 karaktersumber
#&@@Nest[{#+#2,#}&@@#&,{0,1},#]&
32 karakter.#&@@Nest[{+##,#}&@@#&,{0,1},#]&
Round[GoldenRatio^#/√5]&
Round[((1+√5)/2)^#/√5]&
DC (20 byte)
Sebagai bonus, itu bahkan dikaburkan;)
EDIT: Saya dapat menunjukkan bahwa itu mencetak semua angka dalam urutan fibonacci, jika Anda menunggu cukup lama.
sumber
Pendahuluan , 12 byte
Salah satu dari sedikit tantangan di mana Prelude sebenarnya cukup kompetitif:
Ini membutuhkan juru bahasa Python yang mencetak nilai sebagai angka desimal alih-alih karakter.
Penjelasan
Di Prelude, semua baris dieksekusi secara paralel, dengan penunjuk instruksi melintasi kolom program. Setiap baris memiliki tumpukan sendiri yang diinisialisasi ke nol.
Pengulangan berulang selamanya, karena tumpukan pertama tidak akan pernah ada
0
di atas.Perhatikan bahwa ini mulai dari urutan Fibonacci
0
.sumber
Hexagony , 6 byte
Non-bersaing karena bahasa lebih baru daripada pertanyaan.
Tidak Terkumpul:
Ini mencetak urutan Fibonacci tanpa pemisah apa pun.
sumber
TI-BASIC, 11
Oleh pegolf TI-BASIC legendaris Kenneth Hammond ("Weregoose"), dari situs ini . Berjalan dalam waktu O (1), dan menganggap 0 sebagai istilah ke-0 dari deret Fibonacci.
Menggunakan:
Bagaimana cara kerjanya? Jika Anda menghitungnya, ternyata
sinh‾¹(.5)
sama denganln φ
, jadi ini adalah versi modifikasi dari rumus Binet yang membulatkan ke bawah alih-alih menggunakan(1/φ)^n
istilah koreksi. Theround(
(bulat untuk 9 tempat desimal) diperlukan untuk mencegah kesalahan pembulatan.sumber
K - 12
Menghitung
n
dann-1
angka Fibonacci.Hanya angka
nth
Fibonacci.sumber
Julia, 18 byte
sumber
Jawa, 55
Saya tidak dapat bersaing dengan keringkasan sebagian besar bahasa di sini, tetapi saya dapat menawarkan cara yang jauh berbeda dan mungkin jauh lebih cepat (waktu konstan) untuk menghitung angka ke-n:
n
adalah input (int atau panjang), dimulai dengan n = 1. Ini menggunakan rumus dan putaran Binet bukan pengurangan.sumber
0
sebagai angka pertama dalam urutan, ini memberikan0, 0, 1, 1, 3, 4, 8, 12, 21, 33
untuk 10 angka pertamaRuby, 25 karakter
Jawaban st0le disingkat.
sumber
a=b=1;loop{p a;b=a+a=b}
FAC: APL Fungsional, 4 karakter (!!)
Bukan milik saya, karena itu diposting sebagai komunitas wiki. FAC adalah dialek APL yang tampaknya disarankan Hai-Chen Tu sebagai disertasi PhD-nya pada tahun 1985. Dia kemudian menulis sebuah artikel bersama dengan Alan J. Perlis yang disebut " FAC: A Functional APL Language ". Dialek APL ini menggunakan "array malas" dan memungkinkan array dengan panjang tak terbatas. Ini mendefinisikan operator "iter" (
⌼
) untuk memungkinkan definisi ringkas dari beberapa urutan rekursif.Kasus monadik ("unary")
⌼
pada dasarnya adalah kasus Haskelliterate
, dan didefinisikan sebagai(F⌼) A ≡ A, (F A), (F (F A)), …
. The diad ( "binary") kasus didefinisikan agak analog untuk dua variabel:A (F⌼) B ≡ A, B, (A F B), (B F (A F B)), …
. Mengapa ini berguna? Nah, ternyata inilah jenis pengulangan yang dimiliki urutan Fibonacci. Bahkan, salah satu contoh yang diberikan adalahmenghasilkan urutan yang akrab
1 1 2 3 5 8 …
.Jadi, begitulah, sangat mungkin implementasi Fibonacci terpendek dalam bahasa pemrograman yang tidak baru. : D
sumber
R, 40 byte
Belum melihat solusi R, jadi:
sumber
05AB1E, 7 byte
Kode:
Cobalah online!
sumber
Dodos , 26 byte
Cobalah online!
Bagaimana itu bekerja
Fungsi F melakukan semua pengangkatan berat; itu didefinisikan secara rekursif sebagai berikut.
Setiap kali n> 1 , kita memiliki | n - 1 | = n - 1 <n dan || n - 1 | - 1 | = | n - 1 - 1 | = n - 2 <n , sehingga fungsinya kembali (F (n - 1), F (n - 2)) .
Jika n = 0 , maka | n - 1 | = 1> 0 ; jika n = 1 , maka || n - 1 | - 1 | = | 0 - 1 | = 1 = 1 . Dalam kedua kasus, upaya panggilan rekursif F (1) meningkatkan pengecualian Menyerah , sehingga F (0) mengembalikan 0 dan F (1) mengembalikan 1 .
Misalnya, F (3) = (F (1), F (2)) = (1, F (0), F (1)) = (1, 0, 1) .
Akhirnya, fungsi utama didefinisikan sebagai
sehingga hal itu menambah semua koordinat vektor dikembalikan oleh F .
Misalnya, main (3) = jumlah (F (3)) = jumlah (1, 0, 1) = 2 .
sumber
GolfScript, 13 karakter
(Jawaban saya dari pertanyaan Stack Overflow sebelumnya .)
sumber
Desmos , 61 byte
Golf
Klik
add slider
tombol untukn
.Baris terakhir adalah output.
Tidak disatukan
Apakah fungsi.
sumber
Cubix , 10 byte
Jawaban tidak bersaing karena bahasa lebih baru daripada pertanyaan.
Cubix adalah bahasa 2 dimensi baru oleh @ ETHproductions adalah kode yang dibungkus ke dalam ukuran kubus agar sesuai.
Cobalah online
Ini membungkus 2 x 2 kubus dengan cara berikut
O
output nilai dari TOSN
dorong baris baru ke tumpukan/
mencerminkan utarao
Keluarkan karakter dari TOS;
pop TOS/
mencerminkan timur setelah berkeliling kubus+
tambahkan 2 nilai teratas tumpukan!
lewati perintah berikutnya jika TOS adalah 0)
menambah TOS dengan 1. Ini memulai urutan pada dasarnya.Ini adalah loop tanpa akhir yang mencetak urutan dengan pemisah baris baru. Itu mengambil keuntungan dari kenyataan bahwa sebagian besar perintah tidak memunculkan nilai dari stack.
Jika separator diabaikan maka ini dapat dilakukan dengan 5 byte
.O+!)
sumber
Brainfuck,
16,15,14/13 karakterMenghasilkan urutan Fibonacci dan tidak mencetak apa pun. Juga, lebih pendek dari yang di atas.
Yang ini memiliki 14 karakter tetapi mencetak karakter ASCII dengan nilai-nilai deret Fibonacci.
sumber