Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
62
Task/Rep-string/Objeck/rep-string.objeck
Normal file
62
Task/Rep-string/Objeck/rep-string.objeck
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
class RepString {
|
||||
function : Main(args : String[]) ~ Nil {
|
||||
strings := ["1001110011", "1110111011", "0010010010", "1111111111",
|
||||
"0100101101", "0100100", "101", "11", "00", "1"];
|
||||
each(i : strings) {
|
||||
string := strings[i];
|
||||
repstring := RepString(string);
|
||||
if(repstring->Size() > 0) {
|
||||
"\"{$string}\" = rep-string \"{$repstring}\""->PrintLine();
|
||||
}
|
||||
else {
|
||||
"\"{$string}\" = not a rep-string"->PrintLine();
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
function : RepString(string : String) ~ String {
|
||||
offset := string->Size() / 2;
|
||||
|
||||
while(offset > 0) {
|
||||
left := string->SubString(offset);
|
||||
right := string->SubString(left->Size(),left->Size());
|
||||
if(left->Equals(right)) {
|
||||
if(ValidateMatch(left, string)) {
|
||||
return left;
|
||||
}
|
||||
else {
|
||||
return "";
|
||||
};
|
||||
};
|
||||
|
||||
offset--;
|
||||
};
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
function : ValidateMatch(left : String, string : String) ~ Bool {
|
||||
parts := string->Size() / left->Size();
|
||||
tail := string->Size() % left->Size() <> 0;
|
||||
|
||||
for(i := 1; i < parts; i+=1;) {
|
||||
offset := i * left->Size();
|
||||
right := string->SubString(offset, left->Size());
|
||||
if(<>left->Equals(right)) {
|
||||
return false;
|
||||
};
|
||||
};
|
||||
|
||||
if(tail) {
|
||||
offset := parts * left->Size();
|
||||
right := string->SubString(offset, string->Size() - offset);
|
||||
each(i : right) {
|
||||
if(left->Get(i) <> right->Get(i)) {
|
||||
return false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue