Talk:Rep-string: Difference between revisions

Content added Content deleted
m (→‎Clarification: Whoops!)
(→‎c program: new section)
Line 56: Line 56:
==Curiouser and curiouser!==
==Curiouser and curiouser!==
Ledrugs' Python <tt>text.startswith(shifted_text)</tt> is equivalent to TimToadys' Perl 6 boolean shift and XOR. I'll remember that! --[[User:Paddy3118|Paddy3118]] ([[User talk:Paddy3118|talk]]) 19:41, 13 May 2013 (UTC)
Ledrugs' Python <tt>text.startswith(shifted_text)</tt> is equivalent to TimToadys' Perl 6 boolean shift and XOR. I'll remember that! --[[User:Paddy3118|Paddy3118]] ([[User talk:Paddy3118|talk]]) 19:41, 13 May 2013 (UTC)

== c program ==

Hi,
C program works great. I have add new example and it failed ( or I'm wrong). The result IMHO should be rep-string "001"
<lang c>
/*

https://rosettacode.org/wiki/Rep-string#C

*/
#include <stdio.h>
#include <string.h>
int repstr(char *str)
{
if (!str) return 0;
size_t sl = strlen(str) / 2;
while (sl > 0) {
if (strstr(str, str + sl) == str)
return sl;
--sl;
}
return 0;
}
int main(void)
{
// input strings = tests
char *strs[] = {
"1001110011",
"1110111011",
"0010010010",
"1111111111",
"0100101101",
"0100100",
"101",
"11",
"00",
"00100100100100100100100100100100100100100100100100100100100100100100100100100" }; // not works
size_t strslen = sizeof(strs) / sizeof(strs[0]); // number of test values
size_t i;
for (i = 0; i < strslen; ++i) { // check all test values
int n = repstr(strs[i]);
// print result
if (n)
printf("\"%s\" = rep-string \"%.*s\"\n", strs[i], n, strs[i]);
else printf("\"%s\" = not a rep-string\n", strs[i]);
} //
return 0;
}
</lang>

{{out}}
<pre>
"1001110011" = rep-string "10011"
"1110111011" = rep-string "1110"
"0010010010" = rep-string "001"
"1111111111" = rep-string "11111"
"0100101101" = not a rep-string
"0100100" = rep-string "010"
"101" = not a rep-string
"11" = rep-string "1"
"00" = rep-string "0"
"00100100100100100100100100100100100100100100100100100100100100100100100100100" = rep-string "001001001001001001001001001001001001"

</pre>