Definisi
Menurut Wikipedia :
Telegraf Cooke dan Wheatstone adalah sistem telegraf listrik awal yang berasal dari tahun 1830-an yang ditemukan oleh penemu Inggris William Fothergill Cooke dan ilmuwan Inggris Charles Wheatstone. Itu adalah sistem telegraf pertama yang dimasukkan ke dalam layanan komersial. Penerima terdiri dari sejumlah jarum yang dapat digerakkan oleh kumparan elektromagnetik untuk menunjuk ke huruf di papan tulis. Fitur ini disukai oleh pengguna awal yang tidak mau belajar kode, dan pengusaha yang tidak ingin berinvestasi dalam pelatihan staf.
Ini berfungsi seperti ini:
Di tengah ada lima jarum, yang dapat dibelokkan searah jarum jam (seperti halnya jarum tengah) atau berlawanan arah jarum jam (seperti halnya jarum terakhir).
Dalam gambar di atas, dua jarum yang dibelokkan menunjuk ke surat G
, yang berarti bahwa surat yang dikirim / diterima adalah surat G
.
Perhatikan bahwa surat-surat C
, J
, Q
, V
, X
, Z
hilang dan dengan demikian harus diganti dengan huruf lainnya.
Tugas
Anda akan menerima karakter ABDEFGHIKLMNOPRSTUWY
sebagai input, dan Anda akan menampilkan konfigurasi yang sesuai dari lima jarum, dengan tidak terdeteksi sebagai |
, dibelokkan searah jarum jam sebagai /
, dan dibelokkan sebagai anti-jarum jam sebagai \
.
Testcases
Ini mencakup semua input yang mungkin
input output
A /|||\
B /||\|
D |/||\
E /|\||
F |/|\|
G ||/|\ (explanation: see above)
H /\|||
I |/\||
K ||/\|
L |||/\
M \/|||
N |\/||
O ||\/|
P |||\/
R \|/||
S |\|/|
T ||\|/
U \||/|
W |\||/
Y \|||/
Aturan / Persyaratan
- Setiap pengajuan harus berupa program atau fungsi lengkap. Jika itu adalah suatu fungsi, itu harus dapat dijalankan dengan hanya perlu menambahkan panggilan fungsi ke bagian bawah program. Hal lain (mis. Tajuk dalam C), harus dimasukkan.
- Jika memungkinkan, berikan tautan ke situs tempat program Anda dapat diuji.
- Program Anda tidak boleh menulis apa pun
STDERR
.
- Celah Standar dilarang.
- Program Anda dapat menampilkan dalam hal apa pun, tetapi harus dicetak (bukan array atau serupa).
Mencetak gol
Program-program dinilai berdasarkan byte, dalam UTF-8 secara default atau serangkaian karakter pilihan Anda.
Eventually
, jawaban dengan byte terkecil akan menang.
Pengajuan
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 bisa menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# 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 tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.
/* Configuration */
var QUESTION_ID = 87104; // 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 = 48934; // 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,]*[^\s,]),.*?(\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,
});
});
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;
if (/<a/.test(lang)) lang = jQuery(lang).text();
languages[lang] = languages[lang] || {lang: a.language, 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 > b.lang) return 1;
if (a.lang < b.lang) 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}
#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="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<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>
<div id="language-list">
<h2>Winners 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>
<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>
find
bukanindex
untuk -1 byte.05AB1E ,
3734 byteKode:
Menggunakan pengkodean CP-1252 . Cobalah online! .
sumber
JavaScript (ES6),
9789 byteSunting: Disimpan 3 byte dengan beralih ke tabel pencarian yang tidak perlu padding. Disimpan 5 byte dengan mengatur elemen array alih-alih mencoba mengedit string.
Penjelasan: Tabel
ABEHMDFINRGKOSULPTWY
ini disusun sehingga jika Anda membaginya menjadi 5 grup dengan 4 huruf yang berdekatan maka setiap huruf dalam grup berada pada/
kemiringan yang sama dalam diagram, sedangkan jika Anda membaginya menjadi 5 grup dengan mengambil modulo indeks 5 maka masing-masing huruf dalam grup berada pada\
kemiringan yang sama pada diagram. Kelompok-kelompok yang terakhir ini dalam urutan terbalik tetapi itu mudah ditangani dengan mengurangi dari 4. (Mengatur tabel sehingga kelompok-kelompok sebelumnya dalam urutan terbalik membutuhkan biaya lebih banyak untuk memperbaiki.)sumber
VBA, 106 byte
Bita terakhir adalah
enter
yang dihasilkan secara otomatisEnd Function
. Dengan ucapan terima kasih atas skema @Dave dirancang .Meminta di spreadsheet atau di jendela VBA Immediate misalnya dengan
?v("K")
sumber
Mathematica, 129 byte
Fungsi anonim. Mengambil string sebagai input dan mengembalikan string yang mewakili kodenya sebagai output. Menggunakan skema pengkodean yang relatif sederhana.
sumber
Pyth, 27 byte
Ganti escapes
\x94
,\x18
dengan byte yang sesuai.Cobalah online
Bagaimana itu bekerja
Pyth, 32 byte
Tanpa menggunakan tabel pencarian hard-coded.
Cobalah online
Bagaimana itu bekerja
sumber
Python 2,
115111 byteIni adalah implementasi sederhana, tetapi bisa menggunakan beberapa golf. Saran diterima.
Tidak Terkumpul:
sumber
C, 78 byte
versi yang ditampilkan adalah semua ASCII yang dapat dicetak, 79 byte. Yang kedua
\\
dapat diganti dengan byte tunggal yang memiliki 6 bit terakhir yang sama dengan\
karakter 0x5C: 0x1C (jika kompiler Anda mengizinkannya), 0x9C atau 0xDC.Karakter input mendongak dalam string sihir yang berisi nilai-nilai untuk
A
keY
(termasuk spasi untuk karakter yang tidak didukungCJQVX
karakter dari tabel lookup ditafsirkan sebagai lima tumpang tindih kode 2-bit mana.):Kode yang dikomentari dalam program uji
sumber
Ruby, 159 byte
Penjelasan:
Posisi jarum yang dibelokkan dipetakan ke 0..4, dan dianggap sebagai nomor basis-5 (2 digit). Untuk AL, angkanya "apa adanya"; untuk MZ, tambahkan 25 ke nomor tersebut. Peta ini dari variabel
a
kew
.Mengingat nomor yang sesuai dengan huruf, gunakan representasi basis-5: digit 5s untuk jarum pertama, digit 1s untuk jarum kedua, dan digit 25s untuk arah jarum.
Suatu program untuk menyandikan seluruh string, alih-alih satu karakter, hanya sedikit lebih lama: 172 byte.
sumber