2023-02-28 nostr の like (NIP-25 Reactions) を試してみた
nostr の like (NIP-25 Reactions) を試してみた。
kind: 7 かつ content: "+" で tags に e, p を指定したイベント。 e, p は NIP-01 にあるとおり "event" と "pubkey" を意味するもの。ここでは e は like の対象になる text-note (?) の event id で、 p は like の対象の投稿者の public key (たぶん) 。
like は Twitter とは異なり 2 回以上も可能だ。たぶん client 次第だろうけど Amethyst では可能だった。
また like ("+") / dislike ("-") は対というわけではない……というのは dislike は like を取り消すようなものではない。 like を取り消したい場合は NIP-09 Event Deletion を使う。
content に絵文字を含んでも良いが、そちらは試していない。
- https://github.com/nostr-protocol/nips/blob/master/01.md
- https://github.com/nostr-protocol/nips/blob/master/09.md
- https://github.com/nostr-protocol/nips/blob/master/25.md
ABC170 : AtCoder Beginner Contest 170 の A, B, C, D を解いた。
- A - Five Variables
https://atcoder.jp/contests/abc170/tasks/abc170_a
- 提出: https://atcoder.jp/contests/abc170/submissions/39317175
x.iter().position(|x_i| x_i == &0).unwrap() + 1
- B - Crane and Turtle
https://atcoder.jp/contests/abc170/tasks/abc170_b
- 提出: https://atcoder.jp/contests/abc170/submissions/39317272
X <= 100
なので鶴を A, 亀を B として A + B = X の範囲を全探索できる
- C - Forbidden List
https://atcoder.jp/contests/abc170/tasks/abc170_c
- 提出: https://atcoder.jp/contests/abc170/submissions/39317452
X
がp
に含まれていないならX
- あとは
X
から 1 ずつ遠ざかりつつp
に含まれていないものを探せば良い
- D - Not Divisible
https://atcoder.jp/contests/abc170/tasks/abc170_d
- 提出: https://atcoder.jp/contests/abc170/submissions/39318213
A
を昇順にしても結果は変わらないのでソートする- 条件から
A
を走査して出てきた数の倍数は使えない……となる - これはエラトステネスのふるい的な動きになっている
- 入力例 2 にあるような最初に出てくる数が複数個の場合があることに注意する
- その数は答えから除外しないといけない
use proconio::input;
fn main() {
input! {
n: usize,
mut a: [usize; n],
};
let max = 1_000_000_usize;
a.sort();
let mut count = vec![0; max + 1];
for a_i in a.iter().copied() {
count[a_i] += 1;
}
let mut ans = 0_usize;
let mut ok = vec![false; max + 1];
for a_i in a {
if !ok[a_i] {
if count[a_i] == 1 {
ans += 1;
}
for j in (a_i..=max).step_by(a_i) {
ok[j] = true;
}
}
}
println!("{}", ans);
}
今日のコミット。