Jadi ... eh ... ini agak memalukan. Tapi kami tidak memiliki "Halo, Dunia!" tantangan belum (meskipun memiliki 35 varian ditandai dengan hello-world , dan terus bertambah). Meskipun ini bukan golf kode paling menarik dalam bahasa umum, menemukan solusi terpendek di esolang tertentu bisa menjadi tantangan serius. Misalnya, setahu saya tidak diketahui apakah solusi Brainfuck sesingkat mungkin telah ditemukan.
Lebih lanjut, sementara semua Wikipedia (entri Wikipedia telah dihapus tetapi ada salinannya di archive.org
), esolangs dan Rosetta Code memiliki daftar "Halo, Dunia!" program, tidak ada yang tertarik memiliki yang terpendek untuk setiap bahasa (ada juga repositori GitHub ini ). Jika kita ingin menjadi situs yang signifikan dalam komunitas kode golf, saya pikir kita harus mencoba dan membuat katalog pamungkas "Hello, World!" program (mirip dengan bagaimana tantangan quine dasar kita berisi beberapa quine yang paling pendek dikenal dalam berbagai bahasa). Jadi mari kita lakukan ini!
Aturan
- Setiap pengajuan harus merupakan program lengkap.
- Program tidak boleh mengambil input, dan mencetak
Hello, World!
ke STDOUT (aliran byte yang tepat ini, termasuk huruf besar dan tanda baca) ditambah baris baru tambahan opsional, dan tidak ada yang lain.
- Program tidak boleh menulis apa pun kepada STDERR.
Jika ada yang ingin menyalahgunakan ini dengan membuat bahasa tempat program kosong dicetak Hello, World!
, lalu selamat, mereka hanya membuka jalan bagi jawaban yang sangat membosankan.
Perhatikan bahwa harus ada penerjemah agar pengajuan dapat diuji. Diperbolehkan (dan bahkan dianjurkan) untuk menulis sendiri penerjemah ini untuk bahasa yang sebelumnya tidak diterapkan.
- Pengajuan dinilai dalam byte , dalam pengkodean yang sesuai (sudah ada), biasanya (tetapi tidak harus) UTF-8. Beberapa bahasa, seperti Folder , agak sulit untuk dinilai - jika ragu, silakan tanyakan di Meta .
- Ini bukan tentang menemukan yang bahasa dengan terpendek "Hello, World!" program. Ini tentang menemukan "Hello, World!" Yang terpendek. program dalam setiap bahasa. Karenanya, saya tidak akan menandai jawaban apa pun sebagai "diterima".
- Jika bahasa pilihan Anda adalah varian sepele dari bahasa lain (yang berpotensi lebih populer) yang sudah memiliki jawaban (pikirkan dialek BASIC atau SQL, shell Unix atau turunan Brainfuck sepele seperti Alphuck), pertimbangkan untuk menambahkan catatan ke jawaban yang ada bahwa solusi yang sama atau sangat mirip juga merupakan yang terpendek dalam bahasa lainnya.
Sebagai catatan tambahan, tolong jangan turunkan jawaban membosankan (tapi valid) dalam bahasa yang tidak banyak bermain golf - ini masih berguna untuk pertanyaan ini karena mencoba untuk menyusun katalog selengkap mungkin. Namun, lakukan sebagian besar upvote jawaban dalam bahasa di mana penulis benar-benar harus berusaha golf kode.
Untuk inspirasi, periksa Koleksi Hello World .
Katalog
Cuplikan Stack di bagian bawah posting ini menghasilkan katalog dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](https://esolangs.org/wiki/Fish), 121 bytes
/* Configuration */
var QUESTION_ID = 55422; // 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 = 8478; // 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: 500px;
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>
"Hello, World!"
, adalah yang terpendek dalam banyak bahasa yang berbeda dan tidak terkait, haruskah itu diposkan secara terpisah?Jawaban:
Terjebak, 0 byte
Nah, tidak bisa mendapatkan lebih pendek dari itu ... Sebuah program akan menampilkan kosong
Hello, World!
di Terjebak .sumber
Hello, World!
hal itu hanya sesuatu yang saya telah dimasukkan ke dalam sebagai tempat awal pembangunan. Saya tidak berniat meninggalkannya begitu lama, hanya saja tidak pernah sempat untuk menghapusnya.PHP, 13 byte
Iya. Berhasil.
sumber
<?php
dalam kode, menyebabkannya tidak ditafsirkan oleh PHP sama sekali :)Brainfuck, 78 byte
Karunia terbuka: Jika ada yang bisa meningkatkan skor ini, saya akan memberikan hadiah (+500) kepada mereka.@ KSabtelah menemukan solusi7672 byte!Cobalah online!
28 byte pertama
--<-<<+[+[<+>--->->->-<<<]>]
menginisialisasi rekaman dengan hubungan perulangan berikut (mod 256):f n = 171 · (-f n-1 - f n-2 - f n-3 + 1) , dengan f 0 = 57 , f 1 = 123 , dan f 2 = 167 .
Faktor 171 muncul karena 3 -1 ≡ 171 (mod 256) . Ketika nilai saat ini diterjemahkan satu sel kembali (via
<+>---
) kurangi 3 setiap kali secara efektif mengalikan nilai dengan 171.Pada n = 220 nilai yang akan diterjemahkan adalah nol, dan iterasi berhenti. Sepuluh byte sebelum titik berhenti adalah sebagai berikut:
Ini berisi semua komponen yang diperlukan untuk menghasilkan
Hello, World!
, dalam mode berburu-dan-mematuk, dengan sedikit penyesuaian.Saya juga menemukan solusi alternatif 78 byte:
Cobalah online!
Saya menganggap yang satu ini lebih baik daripada yang pertama karena beberapa alasan: ia menggunakan lebih sedikit sel di rumah, ia memodifikasi lebih sedikit sel secara keseluruhan, dan berakhir lebih cepat.
Lebih detail
Relasi rekurensi memiliki representasi yang sangat singkat di Brainfuck. Tata letak umum adalah sebagai berikut:
yang mewakili:
f n = c 1 · f n-1 + c 2 · f n-2 + c 3 · f n-3 + ... + k
dengan
f 0 = s 1 , f 1 = s 2 + c 1 · f 0 + k , f 2 = s 3 + c 2 · f 0 + c 1 · f 1 + k , dll.
Selain itu,
<+>
dapat diubah untuk mengalikan rentang dengan konstanta tanpa mempengaruhi titik berhenti, dan istilah dapat ditambahkan sebelum>{k}
untuk menggeser rentang dengan konstanta, lagi tanpa mempengaruhi titik berhenti.Contoh lainnya
Urutan Fibonacci
Bilangan N-gonal
Bilangan Segitiga
Didefinisikan sebagai f n = 2 · f n-1 - f n-2 + 1 , dengan f 0 = 0 , f 1 = 1 .
Angka Kotak
Bilangan Pentagonal
dll.
BF Crunch
Saya telah menerbitkan kode yang saya gunakan untuk menemukan beberapa solusi ini di github . Membutuhkan .NET 4.0 atau lebih tinggi.
Output diberikan dalam tiga baris:
Misalnya, hasil akhirnya
bfcrunch "hello world" 70 -r -i23
adalah:Ini sesuai dengan program lengkap:
Catatan Lainnya
Halo Dunia!
Bungkus, 78 byte :
atau
Non-pembungkus, 87 byte (sebelumnya 92 byte (mitch) ):
Halo Dunia!
Wrapping, 80 byte :
Non-pembungkus, 81 byte (sebelumnya 92 byte (hirose) ):
Halo Dunia!
Bungkus, 74 byte :
Non-pembungkus, 84 byte :
Versi Esolang
Halo Dunia! \ N
Bungkus, 76 byte :
Ini menggunakan satu sel di kiri rumah, dan dengan demikian akan dianggap 77.
Non-pembungkus, 83 byte :
Rdebath disetujui . output profilebf:
inversed.ru (Peter Karpov)
Halo Dunia!
Wrapping, 70 byte (sebelumnya 78 1 ):
Non-pembungkus, 77 byte (sebelumnya 89?):
Penulis mengklaim bahwa kode tangan terpendek "Hello World!" adalah 89 byte, tetapi tidak memberikan referensi. Saya dengan ini mengklaim catatan untuk ini juga.
Halo Dunia!
Wrapping, 65 byte (sebelumnya 66 byte):
Ini sebenarnya kode tangan juga (yang terbaik yang bisa saya temukan dengan mengunyah adalah 68 byte ). Sel pertama diinisialisasi ke 259 (3), dan dikurangi dengan 7 setiap iterasi, berulang sebanyak 37 kali. Sel berikutnya dikurangi dengan 6, menghasilkan 256 - 6 · 37 = 34 . Sisa sel dikurangi dengan 4 setiap kali, menambahkan satu sel setiap iterasi, dengan setiap sel baru diinisialisasi ke 252 (-4). Hasilnya adalah sebagai berikut:
1 Solusi yang diberikan (79 byte) dapat diremehkan oleh satu:
sumber
interface a{static void main(String[]A){System.out.print("No!");}}
ArnoldC , 71 byte
Hanya untuk lol ..
sumber
IT'S SHOWTIME
danTALK TO THE HAND
harus di baris pertama dan terakhir.Seed ,
601642344203 byteProgram Befunge-98 yang dihasilkan (berdasarkan ini ) adalah
sumber
Mornington Crescent ,
36143568 byteTerima kasih kepada NieDzejkob untuk menghemat 46 byte dengan menggunakan nama garis yang lebih pendek.
Cobalah online!
Ini pastinya suboptimal, tetapi itu setengah dari ukuran solusi pada esolang.
Hello, World
dibangun dengan mengiris nama stasiun berikut dan menggabungkan hasilnya:Akhirnya, saya menghitung kode karakter
!
sebagai(2<<4)+1 == 33
. Semua bagian ini digabungkan dalam Paddington dan akhirnya dicetak di Mornington Crescent.Catatan: Bahasa tidak menentukan apakah mungkin untuk melakukan perjalanan ke stasiun yang sama dua kali berturut-turut, tetapi penerjemah mengizinkannya, jadi saya memanfaatkannya.
sumber
jahat , 70 byte
Ini menggunakan empat perintah berikut:
sumber
brainfuck, 72 byte
Cobalah online!
Dan solusi 76 byte asli non-pembungkus :
Cobalah online!
Solusi terpendek lainnya yang diketahui (sepengetahuan saya) yang saya temukan
'Halo Dunia!' 77 byte:
Cobalah online!
'Halo Dunia!' 70 byte:
Cobalah online!
Ini ditemukan menggunakan program c ++ yang saya tulis di sini: https://github.com/ksabry/bfbrute
Catatan: Saya awalnya ingin membersihkan kode ini sebelum saya mempostingnya agar benar-benar terbaca dan dapat digunakan, tetapi karena saya belum sempat melakukannya selama lebih dari satu tahun saya pikir saya hanya akan mempostingnya apa adanya. Itu membuat banyak penggunaan template dan kompilasi konstanta waktu untuk setiap optimasi potensial dan memiliki banyak kode keluar dari pengujian saya tetapi tidak ada komentar yang sangat membantu, maaf tapi agak mengerikan.
Tidak ada yang sangat pandai tentang kode ini, itu adalah forcer yang kasar pada intinya, namun cukup dioptimalkan. Optimalisasi utama adalah bahwa ia pertama-tama melakukan iterasi melalui semua program tanpa loop (tidak
[
atau]
) hingga panjang tertentu (16 saat ini) dan cache array dari semua perubahan yang akan dilakukan pada array data. Ini hanya akan menyimpan satu program per array perubahan unik jadi misalnya hanya satu>+<<->
dan<->>+<
akan disimpan. Itu kemudian beralih melalui semua program yang mungkin yang terdiri dari program apa pun dalam cache ini dengan kombinasi loop di antara mereka. Setelah menjalankan setiap program, ia melakukan perburuan serakah sederhana dan mematuk karakter dan menambahkan ini ke akhir program.Setelah menjalankan ini melalui ruang semua program saya perhatikan bahwa hampir semua program terpendek (hingga panjang ~ 19) adalah bentuk
*[*[*]*]
. Membatasi pencarian ke program dari formulir ini mempercepat pencarian. Pemegang rekor saat ini ditemukan pada panjang 27. Yang ini sebenarnya dihitung menjadi panjang 74, tapi saya perhatikan urutan tertentu.>.>.>.
yang cukup beruntung untuk memiliki 0 di sel data untuk itu benar memungkinkan untuk disederhanakan untuk[.>]<
membawanya turun ke 72.Saya membiarkannya berjalan cukup lama dan menyelesaikan pencarian dengan parameter saat ini hingga panjang 29, saya curiga akan sulit untuk mengalahkan yang sekarang dengan hanya naik lebih tinggi, saya pikir pendekatan yang paling menjanjikan mungkin akan meningkatkan ruang pencarian di beberapa cara yang cerdas.
sumber
Piet, 90 kode
Ini adalah gambar 30 kali 3. Atau, pada ukuran kode 10:
Menggunakan tata letak 3-tinggi sehingga saya hanya perlu penunjuk sekali. Jika ini masih golf saya mungkin bisa mencukur paling banyak kolom lain, karena ada push-pop no-op di sana.
Edit: @ solusi 84 codel primo .
sumber
Haystack , 17 Bytes
Haystack adalah bahasa pemrograman 2D yang dijalankan hingga menemukan jarum di tumpukan jerami
|
, semua saat melakukan operasi berbasis stack. Semua program dimulai dari sudut kiri atas, dan dapat menggunakan karakter arah><^v
untuk bergerak di sekitar program. Arah diwarisi, jadi Anda tidak perlu terus menggunakan>
untuk pergi ke kanan, arah hanya akan berubah ketika menyentuh karakter arah yang berbeda.Secara default, penerjemah membaca dari kiri atas ke kanan, jadi kita hanya bisa mengatakan "Halo, Dunia!" ke tumpukan, gunakan
o
untuk mencetaknya, lalu letakkan jarum untuk menyelesaikan eksekusi.Bonus: Versi yang lebih menarik:
sumber
o
output sebagai angka. Bukankah seharusnyac
pada akhirnya? Apakah ada dokumentasi yang tepat di mana saja? Ini super menarik!o
output item tumpukan atas apa adanya, yaitu jika nomor ada itu mencetak itu.c
hanya akan melemparkannya ke char. Jadi, jika Anda memiliki string atau char di atas tumpukano
akan menjadi apa yang Anda inginkan :) Akhirnya dokumen ini akan diperbarui ..Tolong, WarDoq! , 1 byte
Bantuan tidak hanya , WarDoq! memiliki built-in untuk ejaan yang paling umum dari frasa, bahkan memenuhi definisi bahasa pemrograman kita yang biasa.
Cobalah di penerjemah online resmi (kode masuk di Input ).
sumber
"Space: Begin a comment. The next non-space character ends the comment and is interpreted as usual."
Jadi Anda hanya dapat memiliki komentar yang dibuat dari spasi ??? Saya kira bahkan bahasa yang paling berguna di dunia harus memiliki satu fitur yang tidak berguna +1,MarioLANG ,
259249242240235 byteIni telah diuji dalam implementasi Ruby .
Setelah mengaburkan, "Halo, Dunia!" di MarioLANG saya melihat ke golf sedikit. Di atas adalah yang terpendek yang saya temukan sejauh ini.
Seperti sebelumnya saya mulai dari solusi Brainfuck yang menetapkan empat sel ke kelipatan terdekat dari 10 karakter
He,
dan spasi dan mengubahnya menjadi MarioLANG . Anda kemudian dapat memperpendek kode sedikit dengan memanfaatkan lantai bantu dalam loop yang hampir membagi separuh lebar loop. Perhatikan bahwa bagian bawah hanya dieksekusi satu kali kurang dari bagian atas, sehingga Anda tidak mendapatkan kelipatan persis dari penghitung awal di semua 4 sel lagi.Akhirnya, saya ingin memanfaatkan ruang terbuang di depan loop, jadi saya menambahkan banyak elevator untuk memanfaatkan ruang vertikal di sana. Dan kemudian saya menyadari bahwa saya dapat melipat kode setelah loop (lihat revisi sebelumnya) di bawah loop untuk menggunakan beberapa ruang lebih vertikal, yang menghemat lima byte lagi.
Ini mungkin masih jauh dari sempurna, tetapi ini merupakan perbaikan yang layak atas solusi naif, saya pikir.
Metagolf
Saatnya untuk otomatisasi ...
Saya sudah mulai menyiapkan pemecah masalah di Mathematica untuk menemukan solusi optimal. Saat ini mengasumsikan bahwa struktur kode diperbaiki: counter set ke 12, 4 sel untuk dicetak, dengan penugasan tetap ke
He,<space>
dan urutan yang sama dari sel-sel itu. Yang bervariasi adalah jumlah+
s dalam loop serta koreksi yang diperlukan setelahnya:Ternyata, untuk penghitung awal 12 solusi buatan tangan saya sudah optimal. Namun, menggunakan 11 malah menghemat dua byte. Saya mencoba semua nilai penghitung dari 6 hingga 20 (inklusif) dengan hasil sebagai berikut:
Catatan: Pemecah ini mengasumsikan bahwa kode linier setelah loop semua pada baris atas, dan kode di atas adalah bahwa solusi dilipat. Mungkin ada solusi keseluruhan yang lebih pendek dengan membuat pemecah menyadari lipatan, karena sekarang saya mendapatkan 3
+
s lebih banyak di bagian pertama secara gratis, dan 4 instruksi berikutnya akan biaya hanya 1 byte, bukan 2.sumber
Gelap , 106 byte
Saya hanya akan membiarkan beberapa kutipan dari spesifikasi bahasa berbicara untuk kecemerlangan esolang ini:
sumber
Homespring , 58 byte
Ruang trailing adalah signifikan.
Biarkan saya menceritakan sebuah kisah. Pernah ada pembangkit listrik yang mendukung pembenihan salmon terdekat. Penetasan salmon menetas salmon tunawisma muda yang memulai perjalanan ke hulu untuk menemukan mata air. Itu memang menemukan mata air seperti itu, dengan nama puitis "Halo, Dunia!", Di mana ia matang dan menelurkan salmon muda baru. Kedua ikan itu sekarang berenang ke hilir, mencari lautan luas. Tetapi tidak jauh dari mulut sungai, ada jaring di sungai - ikan dewasa ditangkap dan hanya ikan muda yang berhasil lolos dan mencapai samudera dan seluruh alam semesta. Sementara itu, tempat penetasan telah menetas lebih banyak salmon yang telah melakukan perjalanan ke hulu dan juga melahirkan dan seterusnya dan seterusnya.
Namun, salju yang mencair dalam jumlah sangat besar telah merambat ke berbagai lengan sungai. Dan tepat setelah salmon muda pertama kami dari mata air "Halo, Dunia!" telah mencapai samudera, salju melanda alam semesta dan ... eh ... menghancurkannya. Dan mereka hidup bahagia selamanya ... atau kurasa tidak.
Itu sebenarnya adalah semantik dari program di atas. Homespring itu aneh.
sumber
Chef , 465 byte
Diuji dengan penerjemah Ruby. Membuat sup alfabet.
Saya mencoba untuk menjadi sesuai dengan spesifikasi asli yang saya bisa, jadi meskipun penerjemah yang saya gunakan memungkinkan Anda memasukkan
the
s dalamPour contents
instruksi, saya belum melakukannya.Mangkuk pengaduk cukup mahal, jadi mungkin ada pendekatan yang lebih baik. Saya mencoba menggunakan konversi basis untuk menyandikan pesan, tetapi sayangnya spec tidak menjelaskan apakah
Divide
menggunakan pembagian integer atau floating point, dan penerjemah saya telah menggunakan yang terakhir. Juga tidak ada operator modulo, yang juga tidak membantu.sumber
Piet, 84 kode
28x3, di sini ditunjukkan dengan lebar codel 10.
Dibuat dengan PietDev , diuji dengan npiet . Tata letak program adalah sebagai berikut:
Fill kuning menunjukkan codels di mana jalur tumpang tindih, fill oranye menunjukkan codel yang harus memiliki warna yang sama, untuk keperluan aliran kontrol.
Untuk membantu dalam pembuatan ini, saya menulis penerjemah dasar untuk bahasa berbasis stack dengan perintah seperti piet, yang saya juluki "pasm" ( sumber ). Output dari juru bahasa ini (dengan input ini ) adalah sebagai berikut:
Tidak ada perintah pointer, switch, atau roll yang digunakan. Tidak ada kode yang terbuang; sebenarnya dua digunakan kembali.
sumber
Spasi ,
192150146 byteSpasi hanya membutuhkan spasi, tab, dan umpan baris sementara karakter lain diabaikan.
Yang bisa merepotkan untuk ditampilkan di sini.
Jadi dalam kode di bawah ini spasi & tab diganti.
Dan sebuah ';' diletakkan di depan umpan garis untuk kejelasan.
Untuk menjalankan kode, ganti dulu. dan> berdasarkan spasi dan tab.
Hexdump kode
Kode perakitan spasi putih:
Catatan:
Saya harus menulis sebuah program hanya untuk menghitung bahwa menambahkan 107 memberikan golf optimal untuk kalimat. Karena bytesize yang diambil integer dalam kode perubahan. : 4 + int (abs (log2 ($ n)))
Kode masih akan berjalan tanpa label "e:" & keluar dari whitespace.kauaveel.ee . Tapi itu bisa membuat kode spasi tidak valid pada kompiler spasi putih lainnya. Jadi byte-byte itu tidak keluar dari solusi.
Harus Diperhatikan Bahwa
Seperti Kevin Cruijssen tunjukkan dalam komentar, dengan memungkinkan "keluar karena kesalahan" sesuai meta, Whitespace dapat golfcoded lebih dari 126 karakter.
Majelis:
sumber
SSN
(nilai kesalahan) alih-alihSSSN
(tekan 0) ), yang diizinkan sesuai dengan meta . Cobalah online (dengan tambahan highlight dan penjelasan) , atau coba online mentah .dup jumpz e
dane: exit
dihapus. Tapi setidaknya di whitespace.kauaveel.ee itu terus berulang sampai browser mengeluh. Saya lebih suka tidak mengubah versi saya menjadi itu, meskipun golf lebih rendah dan meta memungkinkan "keluar karena kesalahan". Tetapi Anda bebas mengirimkan versi Anda sebagai jawaban baru.SSN
di awal, dalam hal ini kesalahan dengan Tidak bisa melakukan Infix Plus ketika hanya memiliki satu item pada tumpukan (107). ( Coba online. ) Saya hanya akan meninggalkan komentar saya di sini ketika ada yang punya saran yang sama. Dan saya sudah memberi +1 pada jawaban Anda sekitar setahun yang lalu. ;)Jawa, 79
Versi Java yang lebih lama mungkin memungkinkan Anda untuk menggunakan blok statis (51 byte), tetapi saat ini saya tidak tahu cara untuk mem-bypass
main
metode ini.sumber
enum
sebagai ganticlass
.interface
dan membuangpublic
specifier. Saya telah menolak kebijakan edit berikut tetapi karena mereka tidak dapat berkomentar, saya pikir saya akan memberi tahu Anda sehingga Anda dapat menggunakannya jika Anda mau.CSS, 30 byte
Cascading Style Sheets (CSS) bukan bahasa pemrograman yang umum, tetapi dapat melakukan output yang tetap dengan cukup baik. Ini dilakukan dengan membuat elemen pseudo setelah setiap elemen dengan konten
Hello, World!
. Jadi hanya satu elemen (<html>
) yang dipilih, ini mengasumsikan bahwa kami menggunakan dokumen HTML paling dasar, yaituIni berfungsi di sebagian besar peramban utama, dengan pengecualian Firefox, yang menerapkan pemilih pada elemen
<html>
dan<body>
. Ini juga mengapa potongan Stack tidak berfungsi, karena selalu ada elemen tubuh yang ditata juga. Di bawah ini adalah versi yang sedikit dimodifikasi untuk diuji.sumber
* *
untuk memilihbody
.* :after
juga tampaknya berhasil.HTML, 13 byte
Teks secara otomatis dimasukkan ke dalam
<body>
, dan ditampilkan.sumber
kode mesin x86_64 untuk Linux, 32 byte
Ketika Linux memulai proses baru, semua register (kecuali RSP) adalah nol, sehingga kita bisa mendapatkan RAX = 1 dengan hanya memodifikasi byte rendah. System V ABI x86-64 tidak menjamin ini, tapi itulah yang sebenarnya dilakukan Linux. Kode ini hanya berfungsi seperti
_start
pada eksekusi statis.Instruksi panggilan mendorong alamat berikutnya, yang berisi string hello world, ke stack. Kami memasukkan alamat string ke
rsi
.Kemudian argumen lain ditetapkan untuk
syscall
untuksys_write
, yang mencetak string.Program berakhir dengan
syscall
kesys_exit
.sys_write
mengembalikan jumlah byte yang ditulis, sehingga byte atas RAX adalah nol setelah yang pertamasyscall
(kecuali itu mengembalikan kesalahan), jadimov al, 60
beri kami RAX =__NR_exit
hanya dalam 2 byte.Anda dapat membuat program ini segfault dengan menutup stdout-nya (
./a.out >&-
), jadisys_write()
akan kembali-EBADF
, yang keduasyscall
akan kembali-ENOSYS
, dan kemudian eksekusi akan jatuh pada akhirnya. Tetapi kita tidak perlu menanganiwrite()
kesalahan dengan anggun.sumber
__NR_write
1. Ini bukan standar di berbagai sistem Unix x86-64. Anda juga bergantung pada perilaku Linux mem-nolkan semua register kecuali RSP sebelum masuk ke proses baru (jadi ini hanya berfungsi jika Anda membuatnya sebagai executable statis, jika tidak, penghubung dinamis akan meninggalkan sampah di byte atasrax
dan Anda ' akan mendapatkan-ENOSYS
). Sistem V86 ABI x86-64 mengatakan register dapat menyimpan nilai-nilai sampah sembarang pada saat masuk_start
, kernel Linux sendiri memilih nol untuk menghindari kebocoran info.mov al, 1
/mov edi, eax
(2 byte), alih-alih membutuhkan awalan REX untuk DIL, karena__NR_write == STDOUT_FILENO = 1
mov esi, msg
(NASM) aliasmov esi, OFFSET msg
(GAS.intel_syntax
) . Masukkan string Anda setelah yang terakhirsyscall
.call/pop
adalah 1 byte lebih pendek dari 64-bit LEA RIP-relatif, tetapi mov adalah yang terbaik.Hexagony ,
3732 byteCobalah online!
Saya dengan bangga mempersembahkan bahasa pemrograman 2D kedua saya, dan (setahu saya) bahasa 2D pertama di grid heksagonal.
Kode sumber tidak terlihat sangat 2D, bukan? Nah, spasi putih adalah opsional dalam Hexagony. Pertama, kode sumber diisi ke nomor heksagonal terpusat berikutnya tanpa no-ops (
.
). Angka seperti itu berikutnya adalah 37, jadi kami menyisipkan lima no-op di akhir. Kemudian kode sumber disusun ulang menjadi segi enam biasa:Ini juga runnable. Cobalah online!
Hexagony memiliki banyak fitur yang cukup funky, termasuk 6 petunjuk instruksi yang berbeda dan tata letak memori yang merupakan grafik garis dari kisi heksagonal, tetapi kode ini hanya menggunakan satu IP dan satu tepi memori, jadi jangan khawatir tentang itu untuk saat ini.
Berikut ini adalah ikhtisar atas perintah yang relevan:
;
mencetak nilai saat ini, modulo 256, sebagai byte ke STDOUT./
adalah mirror yang berperilaku seperti yang Anda harapkan (menyebabkan IP berubah 120 derajat).@
mengakhiri program.Sekarang tangkapan terakhir adalah bahwa sumber membungkus ketiga pasang tepi. Lebih jauh, jika IP meninggalkan grid melalui salah satu dari enam sudut, ada dua baris yang memungkinkan untuk dilompati. Yang mana yang dipilih tergantung pada apakah nilai saat ini positif atau tidak positif. Versi beranotasi berikut menunjukkan di mana IP masuk kembali setiap kali meninggalkan kisi:
Jadi jika kita menghapus semua perubahan arah, program ini bermuara pada kode linear berikut:
Ada apa dengan
Q2
,P0
danP1
? Huruf dicetak dengan mudah karena kami hanya dapat mengatur tepi ke nilai yang sesuai. Untuk koma, spasi, dan tanda seru, itu tidak berhasil. Kami juga tidak bisa hanya mengatur nilai mereka dengan44
,32
,33
, masing-masing, karena tepi memori non-nol untuk memulai dengan, dan karena semantik individu digit yang akan melampiaskan segala macam malapetaka. Jika kita ingin melakukan itu, kita harus me-reset nilai tepi ke nol dengan sesuatu seperti*
,+
,-
,&
atau^
pertama. Namun, karena nilai tersebut diambil modulo 256 sebelum dicetak, kami tidak harus menetapkan nilai tepat ke 44, 32, atau 33. Misalnya,Q2
akan menetapkan nilai tepi81*10 + 2 = 812
, yaitu44
ketika diambil modulo256
. Dengan cara ini kita dapat menyimpan byte pada masing-masing dari tiga karakter tersebut. (Sayangnya, itu tidak pernah mungkin untuk mendapatkan di sana dengan satu digit dari nilai sel telah memiliki. Menggelikan, di mana ia tidak bekerja adalaho
diWorld
, karena itu juga dapat diperoleh dariW9
.)Anda dapat menggunakan skrip CJam ini untuk menemukan semua kombinasi huruf-angka yang menghasilkan karakter yang diberikan.
Saya tidak yakin apakah ini optimal. Saya ragu itu mungkin untuk melakukannya dalam segi enam sisi-panjang 3 (di mana Anda hanya akan memiliki 19 karakter), tetapi mungkin untuk menyelesaikannya dalam segi enam dengan panjang sisi 4 dengan kurang dari 32 perintah, seperti bahwa ada lebih banyak no-ops di ujung grid.
sumber
Q2
,P0
danP1
sangat pintar. Saya tidak tahu bagian modulo 256.M8;
(ataug4;
), yang telah saya gunakan beberapa kali sejak itu. Tidak pernah terpikir oleh saya sampai sekarang untuk meninjau kembali jawaban ini setelah saya membuat perubahan itu.H;e;P;2Q/d;l;r/l;$@;o];o;W;03&;
Malbolge, 112 byte
Saya akan melihat apakah ada yang lebih pendek. Punya komputer yang lebih baik sejak terakhir kali, jadi saya bisa menghasilkan sedikit lebih cepat.
Untuk pertunjukkan, inilah "Hello World!" tanpa koma.
sumber
('<;_#"~6Z|{y1UTvt,PrpMo,llj"Fgge{A??P=^t:8&7YtFVqjSQ@PNM)u(I8%$#"D2AA/[TYXQu88MLp3n1Gk.D-ge
(92 byte)Fourier , 15 byte
PERUBAHAN BESAR untuk Fourier!
Cobalah di FourIDE!
Ya, hari-hari mengetik kode ASCII dari setiap karakter hilang selamanya: Fourier sekarang jenis string pendukung. Ketika Anda melampirkan string di backticks, string itu akan dikeluarkan.
Perhatikan bahwa Anda tidak dapat melakukan apa pun selain menghasilkan string itu: Anda tidak dapat menyimpannya dalam suatu variabel, itu tidak disimpan dalam akumulator dan tidak ada alat manipulasi string.
Di sini, Anda dapat menemukan kecelakaan kereta api yang sudah lama Fourier. ;)
Cobalah online!
Sekarang, beberapa dari Anda mungkin sudah pernah bertemu Fourier sebelumnya dan mungkin cukup akrab dengan bahasa tersebut. Seluruh bahasa didasarkan pada akumulator: variabel global yang hampir semua operator gunakan.
Bagian terpenting dari kode adalah
a
operator. Ini mengambil nilai numerik akumulator dan mengubahnya menjadi karakter menggunakan kode Pythonchr(accumulator)
. Ini kemudian dicetak ke STDOUT.Sayangnya, saya belum memiliki kesempatan untuk menggunakan Fourier ( menyenggol menyenggol , mengedipkan mata ), terutama karena kurangnya operator string dan string. Meski begitu, masih dapat digunakan untuk banyak tantangan lain (lihat bagian contoh halaman EsoLangsnya).
Perhatikan bahwa ini lebih pendek daripada entri saya ke daftar Esolangs karena saya tidak benar-benar berpikir bahwa saya bisa bermain golf lagi. Dan kemudian, ketika menulis tantangan golf string Fourier, saya menyadari bahwa saya bisa sedikit lebih pendek.
Catatan
Jika Anda bertanya-tanya tentang sintaks variabel, Geobits menulis sebuah program yang menggunakan variabel dan panjangnya sama:
Cobalah online!
sumber
C-- , 155 byte
Sayangnya, satu-satunya kompiler C-- yang dikenal, Quick C-- tidak lagi dipertahankan. Ini adalah rasa sakit di leher untuk membangun, tetapi adalah mungkin ...
sumber
C, 30 Bytes
Cukup vanilla, tapi saya tidak bisa memikirkan cara yang biasanya dapat dikompilasi untuk melakukannya lebih pendek (kecuali mungkin semacam trik asm mentah mungkin bekerja?). Tetap saja, mengalahkan sebagian besar esolang!
sumber
main(){puts("Hello, World!");return 0;}
dan 53#include <stdio.h> int main(){puts("Hello, World!");}
byte. Sedikit lebih banyak jika Anda pikir main (void) diperlukan.main(){return!puts("Hello, World!");}
dua byte lebih pendek.h
ini lebih pendek 29 byte. Catatan: Anda harus mengompilasinya dengan-Dh='main(){puts("Hello, World!");}'
saya setengah troll, setengah menghibur diri saya dengan penyalahgunaan kompiler.__FILE__
(8 byte) dan beri nama file tersebutmain(){puts("Hello, World!");}
. Maka itu sama sekali tidak curang;)Tidak dapat dibaca ,
843755732666645629577 byteProgram yang tidak dapat dibaca seharusnya ditampilkan dengan font dengan lebar variabel, sehingga mereka menghormati nama bahasa tersebut. Saya sedikit kecewa karena pendekatan saya yang lebih canggih ternyata jauh lebih lama. Loop sangat mahal di Unreadable ...
Cobalah online!
Bagaimana itu bekerja
Tidak dapat dibaca hanya memiliki sepuluh fungsi; enam di antaranya digunakan dalam kode ini:
Setelah menggunakan notasi satu karakter dan menambahkan spasi dan komentar, kode di atas terlihat seperti berikut. Pernyataan multi-baris dieksekusi dari bawah ke atas.
Saya telah membuat kode sumber yang sebenarnya dengan menjalankan versi pseudocode yang tidak diomentari melalui program CJam ini .
sumber
Befunge 98 ,
1918 BytesJawaban baru (dari undergroundmonorail)
Penjelasan
"
memulai mode stringHello, World!@,kc
"
lagi, mengakhiri mode stringc
)k
mengambil nilai teratas dari stack dan menjalankan perintah berikutnya, penunjuk instruksi dapat melihatnya berkali-kali,
muncul nilai dari stack dan mengeluarkannya sebagai char. Ini telah dieksekusi 12 kali olehk
instruksi terakhir , dan satu kali lebih ketika penerjemah benar-benar membaca,
instruksi@
mengakhiri programPerbedaannya dengan jawaban lama adalah bahwa kita secara cerdik menggunakan kembali
"
karakter dengan menggunakan perilaku pengulangan Befunge ketika menyentuh akhir baris. Karena mungkin kurang intuitif, saya membiarkan yang lama juga. Juga, Anda mungkin telah memperhatikan bahwa tumpukan masih akan berisi beberapa karakter (ck,@
) karena trik yang bagus ini, meninggalkan beberapa kekacauan jika kita ingin melakukan sesuatu setelah itu.Jawaban Lama
Ini berfungsi untuk funge dan befunge 98
Penjelasan
""
didorong ke tumpukan. ('H'
sekarang di atas.)c
(12) didorong ke tumpukank
mengambil nilai teratas dari stack dan menjalankan perintah berikutnya, penunjuk instruksi dapat melihatnya berkali-kali.,
muncul nilai dari stack dan mengeluarkannya sebagai char. Ini telah dieksekusi 12 kali olehk
instruksi terakhir , dan satu kali lebih ketika penerjemah benar-benar membaca,
instruksi@
mengakhiri programsumber
k
c
untuk93+
."ck,@!dlroW ,olleH
"
untuk memulai string, menambahkan seluruh sisa baris ke string itu, membungkus dan hits yang sama"
untuk mengakhiri string. Sekarang seluruh program kecuali yang"
telah didorong ke stack, dengan!dlroW ,olleH
di atasnya. Kemudian ia mencetak 12 karakter teratas dengan cara yang sama seperti yang Anda lakukan dan berhenti@
.JSFuck ,
629362896277 byteIni mungkin disebut sebagai salah satu dari "program Hello, World! Terpendek" terpanjang (sebenarnya saya tidak tahu apakah ini optimal, tapi ini yang terpendek yang berhasil saya dapatkan).
Peringatan: hanya berfungsi di Firefox dan Safari
Ada juga versi yang sedikit lebih panjang (+4 byte) yang juga berfungsi di Chrome dan Microsoft Edge:
Tampilkan cuplikan kode
Bagi mereka yang tidak terbiasa dengan JSFuck, ini tentang menulis JavaScript seolah-olah hanya ada enam karakter, dan itu bisa sangat gila di kali.
Tabel ini menunjukkan bagaimana karakter yang digunakan dalam Hello, World! Program dikodekan dalam JSFuck. Kode teks biasa saja
alert("Hello, World!")
.Di sini string
"fill"
,,"fontcolor"
dll. Harus ditulis sebagai"f"+"i"+"l"+"l"
,"f"+"o"+"n"+"t"+"c"+"o"+"l"+"o"+"r"
untuk dikodekan.Pengidentifikasi global
self
,atob
danbtoa
dituliskan sepertiFunction("return self")()
.Function
itu sendiri seharusnya[]["fill"]["constructor"]
.Koma
","
rumit, saya tidak 100% yakin cara kerjanya tetapi menggunakan[]["concat"]
fungsi untuk membuat array. Saya akan memposting pembaruan ketika saya punya waktu untuk melakukan lebih banyak tes.Saya menyandikan ini menggunakan JScrewIt - kredit ke GOTO 0 untuk membuat alat canggih:
alert("Hello, World!")
Ini berbeda dari jawaban saya untuk pertanyaan ini untuk keberadaan koma setelah "Halo".
Menariknya, sintaks ES6
membutuhkan lebih banyak byte untuk dikodekan (+1500 atau lebih) karena kompleksitas yang lebih tinggi dari pengkodean dua backticks daripada
("
dan")
.sumber
Pada ,
8368 byteSaya percaya ini optimal untuk program linear (yaitu yang tidak menggunakan operator aliran kontrol
?
dan*
). Mungkin secara keseluruhan optimal, tetapi saya tidak tahu bagaimana memanfaatkan operator tambahan dalam jumlah kode yang kecil (atau bagaimana menjelajahi kemungkinan secara terprogram).Bahasa baru-baru ini mengalami beberapa perubahan setelah saya mulai mendiskusikannya dengan penulis melalui email. Namun, saya telah menulis implementasi referensi untuk keadaan saat ini dari spesifikasi bahasa minggu lalu, jadi kode di atas sebenarnya bisa dijalankan.
Metagolf
Awalnya, saya telah menggunakan output dari implementasi referensi saya untuk tantangan ini dan menciptakan solusi kerajinan tangan berdasarkan itu. Namun, itu hanya pendekatan heuristik.
Jadi alih-alih saya menulis solver di Mathematica yang sebenarnya tahu tentang struktur data Pada dan operator untuk menemukan solusi yang optimal. Rata-rata, ia tumbuh secara linier dengan panjang senar (walaupun beberapa kombinasi karakter sedikit lebih lambat dari yang lain) dan membutuhkan waktu sekitar 1,5 jam
Hello, World!
.Jadi bagaimana saya bisa menulis solver. Pertama, kami perhatikan bahwa kami hanya perlu mempertimbangkan 6 operator:
~.oOqQ
(ditambah yang diperlukanw
untuk masing-masing karakter yang dicetak). Menggunakan tumpukan atau kunci bit tidak berguna dalam kode linier, dan saya tidak percaya itu?
dan*
dapat digunakan secara efektif dalam waktu kurang dari 68 byte.Kondisi Pada (mengabaikan tumpukan dan kunci) terdiri dari 7 sakelar dan 8 bit, disusun seperti ini:
Jadi itu mungkin. Langkah preprocessing pertama saya adalah mengatur grafik diarahkan negara di mana masing-masing tepi sesuai dengan satu operasi. Yaitu, grafik memiliki 32768 simpul, masing-masing dengan derajat 6 (satu sisi keluar untuk masing-masing dari 6 operasi yang dipertimbangkan). Kita dapat menggunakan grafik ini untuk menemukan jalur terpendek antara dua keadaan (grafik ini saja bisa sangat berguna untuk bermain golf pada).
215 = 32768
Sekarang untuk setiap karakter, kami ingin mencapai keadaan di mana
w
mencetak karakter itu. Ada berapa negara seperti itu?w
membaca byte dari bit yang dijatuhkannya (secara siklis). Jadi ada 8 kemungkinan rotasi bit karakter yang semuanya dapat mencetak karakter itu. Untuk masing-masing rotasi itu, tiga sakelar telah diperbaiki (untukw
menjatuhkan posisi yang benar). Ini menyisakan 4 sakelar yang berubah-ubah. Jadi kami punya kemungkinan status untuk masing-masing dalam kode kami.8 * 24 = 128
w
Dengan itu kita dapat memecahkan masalah grafik lain: membangun grafik yang memiliki simpul sumber, lalu satu "lapisan" untuk setiap karakter, dan simpul wastafel. Lapisan terdiri dari 128 negara untuk setiap titik, simpul sumber sesuai dengan keadaan awal program (semua switch ke kiri dan semua bit adalah nol). Node wastafel berhubungan dengan tidak ada negara pada khususnya. Kami mendapatkan tepian terarah dari setiap simpul dalam satu lapisan ke setiap simpul di lapisan berikutnya, di mana bobot tepi adalah jarak antara dua keadaan dalam grafik kami sebelumnya. Bobot tepi dari lapisan terakhir ke wastafel semuanya 0. Artinya, kita bisa melakukan prakiraan semua bobot tepi itu. Ini adalah langkah perhitungan yang paling mahal dan membutuhkan waktu 1,5 jam
Hello, World!
.Dengan pengaturan grafik ini, kita dapat menemukan jalur terpendek dari sumber ke wastafel cukup cepat (butuh 0,05 detik pada mesin saya). Untuk
Hello, World!
keadaan yang diinginkan adalah:di mana 7 bit paling signifikan sesuai dengan switch dan 8 bit paling signifikan untuk bit Pada.
Sekarang kita kembali ke grafik pertama dan menemukan tepi yang sebenarnya (yaitu operasi) yang sesuai dengan jalur terpendek antara setiap pasangan negara berikutnya, dan akhiri masing-masing dengan a
w
. Voila, solusi optimal (berdasarkan asumsi di atas).Ini adalah Mathematica lengkap jika ada yang ingin metagolf menggunakan string berbeda pada Pada:
sumber