Einführung
Man betrachte zwei Strings A und B mit der gleichen Länge L und einer ganzen Zahl K ≥ 0 . Für die Zwecke dieser Herausforderung wird gesagt, dass die Zeichenfolgen K- kompatibel sind, wenn eine Zeichenfolge C der Länge K vorhanden ist , sodass A eine zusammenhängende Teilzeichenfolge der Verkettung BCB ist . Beachten Sie, dass A eine Teilzeichenfolge von BAB ist , sodass A und B immer L- kompatibel sind (aber auch K- kompatibel für einige andere K <L sein können ).
Eingang
Ihre Eingaben bestehen aus zwei Zeichenfolgen mit der gleichen positiven Länge, die aus ASCII-Groß- und Kleinbuchstaben bestehen.
Ausgabe
Ihre Ausgabe soll die niedrigste nicht negative ganze Zahl K sein, so dass die Eingaben K- kompatibel sind.
Beispiel
Betrachten Sie die Eingaben
A = HHHHHH
B = HHttHH
Sie sind nicht 0-kompatibel, da A keine Teilzeichenfolge von ist HHttHHHHttHH
. Sie sind auch nicht 1-kompatibel, da A kein Teilstring ist, HHttHH#HHttHH
unabhängig davon, welcher Buchstabe auf dem steht #
. Allerdings A ist ein Teil von HHttHHHHHHttHH
, wo C die aus zwei Buchstaben bestehenden Zeichenfolge ist HH
. Somit sind die Eingänge 2-kompatibel und der richtige Ausgang ist 2
.
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
Die Kompatibilitätsbedingung ist symmetrisch, daher sollte das Vertauschen der beiden Eingänge den Ausgang nicht verändern.
E G -> 1
E E -> 0
aB Bc -> 1
YY tY -> 1
abcd bcda -> 0
abcXd bxcda -> 4
Hello Hello -> 0
Hello olHel -> 1
aBaXYa aXYaBa -> 1
aXYaBa aBaXYa -> 1
HHHHHH HHttHH -> 2
abcdab cdabcd -> 2
XRRXXXXR XRXXRXXR -> 4
evveeetev tetevevev -> 7
vzzvzJvJJz vJJvzJJvJz -> 10
JJfcfJJcfJfb JcfJfbbJJJfJ -> 5
GhhaaHHbbhGGH HHaaHHbbGGGhh -> 9
OyDGqyDGDOGOGyG yDGqOGqDyyyyOyD -> 12
ffKKBBpGfGKpfGpbKb fGpbKbpBBBffbbbffK -> 9
UZuPPZuPdVdtuDdDiuddUPtUidtVVV dtUPtUidtVVVtDZbZZPuiUZuPPZuPd -> 21
Bestenliste
Hier ist ein Stack-Snippet, um eine Rangliste und eine Liste der Gewinner nach Sprache zu erstellen. Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie sie mit einer Kopfzeile des Formulars
## Language, N bytes
Sie können alte Ergebnisse in der Kopfzeile behalten, indem Sie die durchgestrichenen Tags verwenden: <s>57</s>
wird als 57 angezeigt .
/* Configuration */
var QUESTION_ID = 78736; // 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 = 32014; // 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 = '<i>' + lang + '</i>';
lang = jQuery(lang).text().toLowerCase();
languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link, uniq: lang};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.uniq > b.uniq) return 1;
if (a.uniq < b.uniq) 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/Sites/codegolf/all.css?v=617d0685f6f3">
<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><a href="{{LINK}}">{{SIZE}}</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr>
</tbody>
</table>
f("abcdab", "cdabcd")
die 2. sein sollteNetzhaut , 49 Bytes
Probieren Sie es online! (Leicht modifiziert, um alle Tests gleichzeitig auszuführen.)
Der Trick ist, dass wir den Teil zurückverfolgen müssen
A
, den wir nicht findenB
, und bis jetzt habe ich keinen Weg gefunden, dies zu tun, ohne störende Lookarounds und Balancing Groups.quelle
Jolf, 40 Bytes
Versuch es!
Ich bin ganz neu bei Jolf und habe viel gelernt, als ich das herausgefunden habe. Scheint ein bisschen umständlich, könnte wohl noch weiter runtergolfen werden. Sogar 2 Bytes beim Schreiben dieser Erklärung abgeschlagen.
Erläuterung:
quelle
s0zli
Sie erhalten ein Array [0 ... Länge i], wenn Sie diesen Ansatz ausprobieren möchten.)?
ist am nächsten an einem wenn es in Jolf ist. Es ist wie ein Dreiklang, wenn.?ABCs returns
B` wenn a wahr ist, undC
sonst.05AB1E , 20 Bytes
Code:
Verwendet die CP-1252- Codierung. Probieren Sie es online! .
quelle
JavaScript (ES6), 110 Byte
Arbeiten Sie, indem Sie immer längere Stücke aus der Mitte herausschneiden,
a
bis sie zu den beiden Enden von passenb
. Die Schleife ist nicht unendlich, da sie am oder vor dem Ende stoppti == a.length
.quelle