Skip to content
Open

task2 #261

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions learn/yushui468/task2/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
class VoteCounter {
private votes: { [key: string]: 'yes' | 'no' } = {};
private teamMembers: Set<string>;
constructor(members: string[]) {
this.teamMembers = new Set(members);
}
public vote(voter: string, vote: 'yes' | 'no'): string {
if (!this.teamMembers.has(voter)) {
return `${voter} 不是团队成员,无法投票。`;
}
if (this.votes[voter]) {
return `${voter} 已经投过票。`;
}
this.votes[voter] = vote;
return `${voter} 投票成功,选择了 ${vote === 'yes' ? '赞成' : '反对'}`;
}
public tallyVotes(): { yes: number; no: number } {
let yesCount = 0;
let noCount = 0;

for (const vote of Object.values(this.votes)) {
if (vote === 'yes') {
yesCount++;
} else {
noCount++;
}
}
return { yes: yesCount, no: noCount };
}
}

const members = ['zhangsan', 'lisi', 'wanger'];
const voteCounter = new VoteCounter(members);
console.log(voteCounter.vote('zhangsan', 'yes'));
console.log(voteCounter.vote('lisi', 'no'));
console.log(voteCounter.vote('wanger', 'yes'));
console.log(voteCounter.vote('zhangsan', 'no'));

const results = voteCounter.tallyVotes();
console.log(`赞成票: ${results.yes}, 反对票: ${results.no}`);
Binary file added learn/yushui468/task2/vote.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.