Минимальное решение, которое вы хотите, действительно существует в базе R.
Рассмотрим эти данные.
> head(dat, 3)
Categories time.a time.b.
1 Category1 98.59 90.05
2 Category2 133.10 150.26
3 Category3 22.04 75.15
Участок:
barplot(t(dat[-1]), beside=TRUE, ylab="time")
Доходность
[119] [1115 ]
Затем вы можете уточнить его, как хотите, например,
rownames(dat) <- 1:10
barplot(t(dat[-1]), beside=TRUE, xlab="Categories", ylab="time", col=2:3)
legend("topleft", c("time a", "time b"), col=2:3, pch=15)
, что дает
Данные
dat <- structure(list(Categories = structure(c(1L, 3L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 2L), .Label = c("Category1", "Category10", "Category2",
"Category3", "Category4", "Category5", "Category6", "Category7",
"Category8", "Category9"), class = "factor"), time.a = c(98.59,
133.1, 22.04, 10.24, 17.12, 78.21, 115.41, 76.84, 176.09, 73.02
), time.b. = c(90.05, 150.26, 75.15, 7.07, 1.85, 49.03, 7.41,
152.89, 139.64, 90.98)), class = "data.frame", row.names = c(NA,
-10L))
Этот код довольно неэффективен, я не удивлен, что он не дает ожидаемых результатов.
echo RotEncrypt('cheese', 'pie') . "\n<br>\n"
.RotDecrypt(RotEncrypt('cheese', 'pie'), 'pie');
// ÓÑÊÕÜÊ
// cheese
function RotEncrypt($str, $pass){
$pass = str_split(str_pad('', strlen($str), $pass, STR_PAD_RIGHT));
$stra = str_split($str);
foreach($stra as $k=>$v){
$tmp = ord($v)+ord($pass[$k]);
$stra[$k] = chr( $tmp > 255 ?($tmp-256):$tmp);
}
return join('', $stra);
}
function RotDecrypt($str, $pass){
$pass = str_split(str_pad('', strlen($str), $pass, STR_PAD_RIGHT));
$stra = str_split($str);
foreach($stra as $k=>$v){
$tmp = ord($v)-ord($pass[$k]);
$stra[$k] = chr( $tmp < 0 ?($tmp+256):$tmp);
}
return join('', $stra);
}
Протестирован и, кажется, работает нормально для меня.
В любом случае, я чувствую, что Следует предупредить вас, что это действительно небезопасная форма шифрования, большинство паролей используют одинаковые наборы символов и довольно небольшой диапазон длин, что делает эту систему очень уязвимой для людей, способных работать с довольно хорошим уровнем точности. пароль.
Вот еще один метод:
$key = 'the quick brown fox jumps over the lazy ';
$string = 'Hey we are testing encryption';
echo enc_encrypt($string, $key)."\n";
echo enc_decrypt(enc_encrypt($string, $key), $key)."\n";
function enc_encrypt($string, $key) {
$result = '';
for($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char) + ord($keychar));
$result .= $char;
}
return base64_encode($result);
}
function enc_decrypt($string, $key) {
$result = '';
$string = base64_decode($string);
for($i = 0; $i < strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char) - ord($keychar));
$result .= $char;
}
return $result;
}
Опять же, не ожидайте, что это будет очень безопасно.