mirror of
https://github.com/mii443/encrypt.git
synced 2025-09-01 14:49:11 +00:00
投票システム作成
This commit is contained in:
51
client.gpsl
51
client.gpsl
@ -1,40 +1,27 @@
|
|||||||
#[server(ip = "localhost:8080")]
|
#[server(ip = "localhost:8080")]
|
||||||
fn encrypt_add(a: eep, b: eep) {
|
fn encrypt_add(a: Vec<eep>) {
|
||||||
println("a: " + a)
|
let r: eep = a[0];
|
||||||
println("b: " + b)
|
println("1人目: " + a[0]);
|
||||||
return a + b
|
for (let i = 1; i < length(a); i += 1) {
|
||||||
}
|
println((i + 1) + "人目: " + a[i]);
|
||||||
|
r = r + a[i];
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
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);
|
for (let i = 0; i < n; i += 1) {
|
||||||
vec_test = push(vec_test, 2);
|
print("賛成なら1, 反対なら0を入力してください > ");
|
||||||
println(vec_test[0]);
|
a[i] = encrypt(to_u512(read_line()));
|
||||||
println(vec_test[1]);
|
}
|
||||||
|
|
||||||
print("Input a: ")
|
println("賛成者の合計は" + decrypt(encrypt_add(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))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ impl Display for EncryptedEllipticCurvePoint {
|
|||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
match self.data {
|
match self.data {
|
||||||
EllipticCurvePoint::Infinity => write!(f, "Infinity"),
|
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 {
|
for arg in args {
|
||||||
value.push(arg);
|
value.push(arg);
|
||||||
}
|
}
|
||||||
println!("vec push: {:?}", value.clone());
|
|
||||||
return ExternalFuncReturn {
|
return ExternalFuncReturn {
|
||||||
status: ExternalFuncStatus::SUCCESS,
|
status: ExternalFuncStatus::SUCCESS,
|
||||||
value: Some(Variable::Vec { value, gpsl_type }),
|
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" => {
|
"to_u512" => {
|
||||||
if args.len() != 1 {
|
if args.len() != 1 {
|
||||||
return ExternalFuncReturn {
|
return ExternalFuncReturn {
|
||||||
|
Reference in New Issue
Block a user