mirror of
https://github.com/mii443/encrypt.git
synced 2025-08-22 23:15:43 +00:00
投票システム作成
This commit is contained in:
51
client.gpsl
51
client.gpsl
@ -1,40 +1,27 @@
|
||||
#[server(ip = "localhost:8080")]
|
||||
fn encrypt_add(a: eep, b: eep) {
|
||||
println("a: " + a)
|
||||
println("b: " + b)
|
||||
return a + b
|
||||
}
|
||||
|
||||
fn add(a: num, b: num) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
fn rec(a: num, b: num) {
|
||||
if b > 0 {
|
||||
return rec(a + 2, b - 1);
|
||||
} else {
|
||||
return a;
|
||||
fn encrypt_add(a: Vec<eep>) {
|
||||
let r: eep = a[0];
|
||||
println("1人目: " + a[0]);
|
||||
for (let i = 1; i < length(a); i += 1) {
|
||||
println((i + 1) + "人目: " + a[i]);
|
||||
r = r + a[i];
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let a: Vec<eep> = vec(encrypt(0));
|
||||
print("人数を入力してください > ");
|
||||
let n = to_num(read_line());
|
||||
for (let i = 0; i < (n - 1); i += 1) {
|
||||
a = push(a, encrypt(0));
|
||||
}
|
||||
println(n);
|
||||
|
||||
let vec_test: Vec<num> = vec(0);
|
||||
vec_test = push(vec_test, 2);
|
||||
println(vec_test[0]);
|
||||
println(vec_test[1]);
|
||||
for (let i = 0; i < n; i += 1) {
|
||||
print("賛成なら1, 反対なら0を入力してください > ");
|
||||
a[i] = encrypt(to_u512(read_line()));
|
||||
}
|
||||
|
||||
print("Input a: ")
|
||||
let a: U512 = to_u512(read_line())
|
||||
|
||||
print("Input b: ")
|
||||
let b: U512 = to_u512(read_line())
|
||||
|
||||
let enc_a = encrypt(a)
|
||||
let enc_b = encrypt(b)
|
||||
|
||||
let enc_res = encrypt_add(enc_a, enc_b)
|
||||
|
||||
println(decrypt(enc_res))
|
||||
println("賛成者の合計は" + decrypt(encrypt_add(a)) + "です。");
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ impl Display for EncryptedEllipticCurvePoint {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self.data {
|
||||
EllipticCurvePoint::Infinity => write!(f, "Infinity"),
|
||||
EllipticCurvePoint::Point { x, y, .. } => write!(f, "{:x}{:x}", x.value, y.value),
|
||||
EllipticCurvePoint::Point { x, y, .. } => write!(f, "{:x}", x.value + y.value),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -65,7 +65,6 @@ pub const STD_FUNC: fn(
|
||||
for arg in args {
|
||||
value.push(arg);
|
||||
}
|
||||
println!("vec push: {:?}", value.clone());
|
||||
return ExternalFuncReturn {
|
||||
status: ExternalFuncStatus::SUCCESS,
|
||||
value: Some(Variable::Vec { value, gpsl_type }),
|
||||
@ -133,6 +132,18 @@ pub const STD_FUNC: fn(
|
||||
}),
|
||||
}
|
||||
}
|
||||
"to_num" => {
|
||||
let num = match args[0].clone() {
|
||||
Variable::Number { value } => value,
|
||||
Variable::U512 { value } => value.as_u64() as i64,
|
||||
Variable::Text { value } => value.as_str().parse::<i64>().unwrap(),
|
||||
_ => panic!("to_num: first argument must be a number"),
|
||||
};
|
||||
ExternalFuncReturn {
|
||||
status: ExternalFuncStatus::SUCCESS,
|
||||
value: Some(Variable::Number { value: num }),
|
||||
}
|
||||
}
|
||||
"to_u512" => {
|
||||
if args.len() != 1 {
|
||||
return ExternalFuncReturn {
|
||||
|
Reference in New Issue
Block a user