Ini adalah utas polisi. Untuk utas perampok, buka di sini .
pengantar
Untuk tantangan Polisi / Perampok ini, polisi akan menulis program penghasil keluaran dan menjalinnya bersama. Adalah tugas perampok untuk memisahkan program polisi untuk menghasilkan hasil yang diinginkan.
Aturan polisi
Polisi dapat menggunakan total hingga 256 byte untuk menulis antara 2 dan 8 program (inklusif), yang semuanya harus menghasilkan beberapa output. Semua program yang ditulis harus dalam bahasa yang sama. Polisi akan "menjalin" program mereka bersama-sama untuk mempersulit para perampok untuk mencari tahu apa program itu.
Sekarang untuk deskripsi menjalin. Pertimbangkan string yang mewakili berbagai program. Proses menjalin adalah penarikan berulang dari karakter pertama dari salah satu program dan menyatukannya ke akhir string baru sampai tidak ada karakter dalam salah satu program yang tersisa. Misalnya, jika dua program lion
dan TIGER
, kemungkinan menjalinnya adalah TIliGoEnR
. Namun, program tidak dapat diacak dengan cara apa pun, sehingga RoITEnlGi
tidak dapat diterima.
Perlu dicatat bahwa ketika karakter semua kecuali satu program dihapus dari hasil jalinan, program yang tersisa akan ditampilkan utuh. Menghapus surat TIGER
dari TIliGoEnR
hasil pada lion
.
Semua program dan keluaran polisi harus hanya berisi karakter ASCII yang dapat dicetak (20-7E) dan baris baru. Program tidak boleh mengandung kesalahan dan harus berjalan dalam 10 detik pada mesin yang masuk akal. Untuk pengiriman apa pun, harus ada juru bahasa gratis di suatu tempat. Menambahkan komentar ke kiriman tidak diperbolehkan, seperti hashing dan bentuk kriptografi lainnya. Program kosong tidak diizinkan (Maaf Terjebak ).
Polisi akan memposting kode yang terjalin, bahasa, jumlah program berbeda yang digunakan, dan output untuk setiap program. Terima kasih banyak kepada Martin untuk menulis skrip CJam ini untuk secara otomatis menjalin program Anda.
Program dianggap aman setelah satu minggu berlalu sejak saat posting. Pada titik itu, polisi harus memposting masing-masing program untuk menerima poin.
Mencetak gol
Ada dua komponen yang ditambahkan bersamaan saat mencetak pengiriman yang aman.
- 256 dibagi dengan jumlah 2 dinaikkan ke kekuatan jumlah program yang digunakan.
- Bulatkan jumlah byte dalam jalinan hingga kekuatan terdekat 2 dan bagi menjadi 256.
Misalnya, jika entri TIliGoEnR
(9 byte) aman, ia akan menerima 256/2 ^ 2 + 256/16 = 80 poin.
Ketika pengajuan seorang polisi retak, polisi kehilangan 16 poin. Polisi harus menunjukkan bahwa pengajuan mereka telah dipecahkan.
Pemenang tantangan polisi adalah orang dengan poin terbanyak setelah periode waktu yang cukup bagi orang untuk berpartisipasi.
Papan peringkat
Ini adalah pekerjaan yang sedang berjalan yang diadaptasi oleh intrepidcoder dari pertanyaan ini .
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga yang tepat :
# Language Name, N programs, M bytes; Score ###/### (if safe/cracked)
Apa pun setelah titik koma akan diabaikan, sehingga Anda dapat menempatkan skor Anda di sana.
Jika kiriman Anda aman, pasang tajuk seperti ini:
# Language Name, safe, N programs, M bytes; Score ###
Jika sudah retak, letakkan tajuk seperti ini:
# Language Name, [cracked](link-to-crack), N programs, M bytes; Score -16
/* Configuration */
var QUESTION_ID = 64520; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 43444; // This should be the user ID of the challenge author.
var SECONDSINDAY = 86400;
var SAFECUTOFFDAYS = 7;
var SORTBYTIME = true;
var SUBTRACTCRACKEDPOINTS = true;
var EXPIREDTIME = 1448232502000;
/* App */
var SAFE_REG = /<h\d>.*?[sS][aA][fF][eE].*<\/\h\d>/;
var POINTS_REG = /<h\d>.*(\d+)\s*program.*<\/h\d>/i; // /(?:<=|≤|<=)\s?(?:<\/?strong>)?\s?(\d+)/
// var POINTS_REG_ALT = /<h\d>.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var LENGTH_REG = /<h\d>.*?((\d+)\s*byte).*<\/h\d>/i;
var CRACKED_HEADER_REG = /<h\d>.*[Cc][Rr][Aa][Cc][Kk][Ee][Dd].*<\/h\d>/;
var CRACKED_COMMENT_REG = /(.*[Cc][Rr][Aa][Cc][Kk][Ee][Dd].*<a href=.*)|(.*<a href=.*[Cc][Rr][Aa][Cc][Kk][Ee][Dd].*)/
var OVERRIDE_REG = /^Override\s*header:\s*/i;
var LANGUAGE_REG = /<h\d>\s*(.+?),.*<\/h\d>/;
var LANGUAGE_REG_ALT = /<h\d>\s*(<a href=.+<\/a>).*<\/h\d>/
var LANGUAGE_REG_ALT_2 = /<h\d>\s*(.+?)\s.*<\/h\d>/;
var LANGUAGE_REG_ALT_3 = /<h\d>(.+?)<\/h\d>/;
var answers = [],
answers_hash, answer_ids, answer_page = 1,
more_answers = true,
comment_page;
function answersUrl(index) {
return "//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 "//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) {
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
var open = [];
answers.forEach(function(a) {
var body = a.body.replace(/(<h\d>.*);.*(<\/h\d>)/,"$1$2"); // Ignore all text after a semicolon.
var cracked = false;
a.comments.forEach(function(c) {
var was_safe = (c.creation_date + (SECONDSINDAY * SAFECUTOFFDAYS) > a.creation_date);
if (CRACKED_COMMENT_REG.test(c.body) && !was_safe)
cracked = true;
});
if (CRACKED_HEADER_REG.test(body)) cracked = true;
// if (SUBTRACTCRACKEDPOINTS||!cracked) {
var createDate = a.creation_date;
var currentDate = Date.now() / 1000;
var timeToSafe = (createDate + (SECONDSINDAY * SAFECUTOFFDAYS) - currentDate) / SECONDSINDAY;
var SafeTimeStr = (timeToSafe > 2) ? (Math.floor(timeToSafe) + " Days") :
(timeToSafe > 1) ? ("1 Day") :
(timeToSafe > (2 / 24)) ? (Math.floor(timeToSafe * 24) + " Hours") :
(timeToSafe > (1 / 24)) ? ("1 Hour") :
"<1 Hour";
var expired = createDate > (EXPIREDTIME);
var safe = timeToSafe < 0;
var programs = body.match(POINTS_REG);
var length = body.match(LENGTH_REG);
safe = safe && !cracked
isOpen = !(cracked || safe);
if (programs && length) {
var safepoints = (256/Math.pow(2,parseInt(programs[1],10)) +
256/Math.pow(2,Math.ceil(Math.log2(parseInt(length[1],10)))));
var crackedpoints = Math.pow(2, parseInt(programs[1],10),2) +
Math.pow(2,Math.floor(Math.log2(parseInt(length[1],10))));
valid.push({
user: getAuthorName(a),
numberOfSubmissions: (safe && !expired) ? 1 : 0,
points: (safe && !expired) ? safepoints : 0,
open: (isOpen && !expired) ? 1 : 0,
cracked: (cracked && !expired) ? 1 : 0,
expired: (expired) ? 1 : 0
});
}
if ((isOpen || expired) && programs) {
var language = body.match(LANGUAGE_REG);
if (!language) language = body.match(LANGUAGE_REG_ALT);
if (!language) language = body.match(LANGUAGE_REG_ALT_2);
if (!language) language = body.match(LANGUAGE_REG_ALT_3);
open.push({
user: getAuthorName(a),
safePts: programs ? safepoints : "???",
crackedPts: programs ? crackedpoints : "???",
language: language ? language[1] : "???",
link: a.share_link,
timeToSafe: timeToSafe,
timeStr: (expired) ? "Challenge closed" : SafeTimeStr
});
}
// }
});
if (SORTBYTIME) {
open.sort(function(a, b) {
return a.timeToSafe - b.timeToSafe;
});
} else {
open.sort(function(a, b) {
var r1 = parseInt(a.length);
var r2 = parseInt(b.length);
if (r1 && r2) return r1 - r2;
else if (r1) return r2;
else if (r2) return r1;
else return 0;
});
}
var pointTotals = [];
valid.forEach(function(a) {
var index = -1;
var author = a.user;
pointTotals.forEach(function(p) {
if (p.user == author) index = pointTotals.indexOf(p);
});
if (index == -1) {
if (SUBTRACTCRACKEDPOINTS && a.cracked) a.points -= 16;
pointTotals.push(a);
}
else {
pointTotals[index].points += a.points;
pointTotals[index].numberOfSubmissions += a.numberOfSubmissions;
pointTotals[index].cracked += a.cracked;
pointTotals[index].expired += a.expired;
pointTotals[index].open += a.open;
if (SUBTRACTCRACKEDPOINTS && a.cracked) pointTotals[index].points -= 16;
}
});
pointTotals.sort(function(a, b) {
if (a.points != b.points)
return b.points - a.points;
else if (a.numberOfSubmissions != b.numberOfSubmissions)
return b.numberOfSubmissions - a.numberOfSubmissions;
else if (a.open != b.open)
return b.open - a.open;
else if (a.cracked != b.cracked)
return a.cracked - b.cracked;
else return 0;
});
pointTotals.forEach(function(a) {
var answer = jQuery("#answer-template").html();
answer = answer
.replace("{{NAME}}", a.user)
.replace("{{SAFE}}", a.numberOfSubmissions)
.replace("{{OPEN}}", a.open)
.replace("{{CLOSED}}", a.expired)
.replace("{{CRACKED}}", a.cracked)
.replace("{{POINTS}}", a.points);
answer = jQuery(answer);
jQuery("#answers").append(answer);
});
open.forEach(function(a) {
var answer = jQuery("#open-template").html();
answer = answer
.replace("{{NAME}}", a.user)
.replace("{{SAFE}}", a.safePts)
.replace("{{CRACKED}}", a.crackedPts)
.replace("{{LANGUAGE}}", a.language)
.replace("{{TIME}}", a.timeStr)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#opensubs").append(answer);
});
}
body {
text-align: left !important
}
#answer-list {
padding: 10px;
width: 350px;
float: left;
}
#open-list {
padding: 10px;
width: 470px;
float: left;
}
table thead {
font-weight: bold;
vertical-align: top;
}
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>Author</td>
<td>Safe</td>
<td>Open</td>
<td>Cracked</td>
<td>Late Entry</td>
<td>Score</td>
</tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<div id="open-list">
<h2>Open submissions</h2>
<table class="open-list">
<thead>
<tr>
<td>Author</td>
<td>Points if Safe</td>
<td>Points if Cracked</td>
<td>Language</td>
<td>Time Remaining</td>
<td>Link</td>
</tr>
</thead>
<tbody id="opensubs">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr>
<td>{{NAME}}</td>
<td>{{SAFE}}</td>
<td>{{OPEN}}</td>
<td>{{CRACKED}}</td>
<td>{{CLOSED}}</td>
<td>{{POINTS}}</td>
</tr>
</tbody>
</table>
<table style="display: none">
<tbody id="open-template">
<tr>
<td>{{NAME}}</td>
<td>{{SAFE}}</td>
<td>{{CRACKED}}</td>
<td>{{LANGUAGE}}</td>
<td>{{TIME}}</td>
<td><a target="_parent" href="{{LINK}}">Link</a>
</td>
</tr>
</tbody>
</table>
|||
katakanlah) dan kemudian gantiN
kode dalam dengan string yang mengandung pembatas Anda, misalnya"|||"
. (@Eridan merasa bebas untuk memasukkan ini dalam tantangan.)Jawaban:
Hexagony , 6 program, 53 byte; Skor 8/96 (jika aman / retak)
Bahkan jika ini berjalan aman, itu akan sangat sedikit poin untuk saya, tapi saya pikir saya akan memberikan teka-teki yang bagus untuk perampok untuk menyimpan beberapa poin. :) Saya tidak tahu betapa mudah atau sulitnya ini sebenarnya.
Berikut hasilnya:
sumber
[
saklar mengontrol ke penunjuk instruksi yang dimulai pada@
di sudut kiri.JavaScript, retak , 2 program, 110 byte; Skor -16
Luck semoga sukses dengan yang satu ini.
Catatan: Saya sarankan berjalan di browser modern (pada dasarnya bukan IE)
Output, program pertama:
Output, program kedua:
sumber
BitShift , cracked , 2 program, 110 byte; Skor -16
Program terjalin
Output, program pertama
Output, program kedua
saya minta maaf
sumber
Vitsy , cracked , 2 program, 15 byte; Skor -16
Program terjalin
Vitsy sangat cantik, sangat bersih. Lihatlah sumbernya, dan kagumi.
Output, program pertama
Output, program kedua
Itu 121 baris baru.
sumber
Java, retak , 2 program, 155 byte; Skor -16
Program terjalin
Output, program pertama
Dan membuntuti baris baru.
Output, program kedua
Dan membuntuti baris baru.
Program asli
Pertama
Kedua
sumber
interface
bukannyaclass
sampai aku melihat jawaban Anda pada Hello, World! tantangan. Saya akan mencoba untuk memecahkan ini selama makan siang saya.Pyth, aman, 2 program, 63 byte; Skor 68
Program terjalin
Program pertama
Keluaran:
Program:
Program kedua
Keluaran
Program:
sumber
# Pyth, safe, 2 programs, 63 bytes; Score 68
CJam, aman, 2 program, 250 byte; Skor 65
Program terjalin
Output, program pertama
Output, program kedua
Larutan
Program pertama
Cobalah online!
Program kedua
Cobalah online!
Bagaimana itu bekerja
Kedua program memiliki format ini:
De-menjalin program harus memerlukan brute force atau memfaktorkan semi-primes.
sumber
Befunge, Aman, 2 program, 228 byte; Skor 65
Program terjalin
Output, program pertama
Output, program kedua
Saya ragu ini akan mudah retak. Sebenarnya Anda harus menyerah sekarang. Lagi pula, siapa yang butuh 132 poin?
Menjawab
Program 1:
Program 2:
sumber
PHP, retak , 2 program, 71 byte; Skor -16
Interleaved
Keluaran
Program 1
Program ke-2
Catatan :
Notices
harus ditekan.sumber
JavaScript ES6, dipecahkan , 2 program, 255 byte; Skor -16
Kerja bagus @Bas! GG.
Output 1:
Output 2:
sumber
JavaScript (ES6), aman, 2 program, 255 byte; Skor 65
Program terjalin
Output dari Program Pertama
Output dari Program Kedua
Saya mencoba menggunakan karakter
(l)+=<>
sebanyak mungkin. Sisanya hanya tipe konversi.Program pertama
Program kedua
sumber
Ruby, retak , 2 program, 64 byte; Skor -16
Interleaved
Keluaran
Program 1
Program ke-2
Kedua output memiliki baris baru.
sumber
Perl, aman, 2 program, 102 byte; Skor 66
Output pertama
Output Kedua
Larutan
Program pertama:
Program kedua:
sumber
Pyth, 2 program, 61 byte; Skor 68/36 (jika aman / retak)
Program terjalin
Output, program pertama
Output, program kedua
Seharusnya tidak terlalu sulit.
sumber
PHP, retak , 3 program, 31 byte; Skor -16
Ini harus mudah menggunakan 3 program.
Interleaved
Keluaran
Program 1
Program ke-2
Program ke-3
Catatan :
Notices
harus ditekan.sumber
JavaScript ES6, 2 program, 225 byte; Skor 65/132 (jika aman / retak)
Jalinan:
Output pertama:
Output kedua:
sumber
Brainfuck, 4 program, 251 byte; 17/144 (jika aman / retak)
Program terjalin
Output, program pertama
Eridan
Output, program kedua
Ampora
Output, program ketiga
PPCG
Output, program keempat
Code Golf
sumber
Mikroskrip II , aman, 2 program, 44 byte; skor 68
Sumber yang saling terkait:
Output, program pertama:
Output, program kedua:
Dan inilah jawabannya:
Program 1:
Program 2:
sumber
Malbolge, 2 program, 194 byte; Skor 65
Jalinan
Keluaran 1
Keluaran 2
Hanya masalah waktu saja.
Program
O1
O2
sumber
Javascript, aman, 2 program, 106 byte; Skor 66
Keluaran 1
Keluaran 2
Larutan
Program 1
Program 2
sumber
Japt , aman, 3 program, 63 byte; Skor 36
Versi interpreter yang dibuat untuk ini dapat ditemukan di sini . Sayangnya, saya kehilangan aslinya, jadi saya harus melihat apakah saya bisa memecahkannya sendiri ...
Program terjalin
Keluaran 1
Itu 222 digit, kalau-kalau Anda bertanya-tanya.
Keluaran 2
Keluaran 3
sumber
JavaScript, 2 program, 255 byte; Skor 65/132 (jika aman / retak)
Output program pertama:
Output Program kedua:
Output program kedua adalah teks dan bukan JavaScript:
null
Ini seharusnya mudah bagi para perampok.
sumber
Vitsy , 4 program, 228 byte; Skor 17
(Menggunakan versi yang lebih lama, yang ditautkan)
Heeeyyyy @VoteToClose. Saya tidak berharap yang satu ini terlalu lama, tetapi Anda tidak pernah tahu ... Saya suka bahasa Anda, sekarang saya sering menggunakannya!
Program terjalin
Keluaran 1
Keluaran 2
Keluaran 3
Keluaran 4
Semoga berhasil! Saya menggunakan penerjemah online, tetapi itu harus bekerja di toples aman.
Program
O1
O2
O3
O4
sumber
Permen, aman, 2 program, 85 byte; Skor 66
Lihat: Permen
Output:
51450000
1609944
Pembaruan: Ini adalah dua program yang diikuti oleh interleaving mereka:
sumber
Foo , 6 program, 197 byte; Skor 5/192 (jika aman / retak)
Kode terjalin:
Output dari program 1:
Perhatikan tab pada baris pertama dan spasi tambahan pada baris kedua
Output dari program ke-2:
Perhatikan bahwa baris pertama kosong
Output dari program ke-3:
Output dari program ke-4:
Output dari program ke-5:
Output dari program ke-6:
Hanya ada satu juru bahasa untuk Foo yang saya tahu, Anda dapat menemukannya di sini
sumber
@wizzwizz4
komentar Anda.Python 2, 8 program, 92 byte; Nilai: -16
Satu lagi yang mudah:
8 output:
sumber
print
di Python 2.JavaScript, 8 program, 233 byte; Skor 2/384 (jika aman / retak)
OK, sekarang saya menjadi jahat:
1 Output:
Output 2:
3 Output:
Output ke-4:
Output ke-5:
6 Output:
Output ke-7:
Output ke-8:
sumber
Python 2, program aman 2, 148 byte; Skor 65
Output 1:
Output 2:
Program 1:
Program 2:
sumber