Skip to content

Instantly share code, notes, and snippets.

@liyocee
Created October 25, 2012 13:09
Show Gist options
  • Save liyocee/3952452 to your computer and use it in GitHub Desktop.
Save liyocee/3952452 to your computer and use it in GitHub Desktop.
Sharing money amongst friends.
import java.util.List;
import java.util.ArrayList;
import java.io.*;
import java.util.StringTokenizer;
public class Money{
private List<String>allMembers;
private List<String>allData;
private List<Member>members;
private static String inFile="gift1.in";
private static String outFile="gift1.out";
public Money(){
this.allMembers=new ArrayList<String>();
this.members=new ArrayList<Member>();
this.allData=new ArrayList<String>();
}
public static void main(String[]args){
Money money=new Money();
money.setAllMembers(Money.inFile);
money.getAllMembers();
}
public void getAllMembers(){
for(int n=0;n<members.size();n++){
int temp=this.members.get(n).getInitAmount();
int count=this.members.get(n).getFriendsCount();
int share=0;
List<String> tempF=null;
if(count!=0){
share=temp/count;
this.members.get(n).setAmountShared(share*count);
for(int j=0;j<count;j++){
tempF=this.members.get(n).getFriends();
}
for(int a=0;a<tempF.size();a++){
for(int k=0;k<members.size();k++){
if(tempF.get(a).equals(members.get(k).getMemberName())) {
this.members.get(k).setAmountIn(share+this.members.get(k).getAmountIn());
break;
}else continue;
}
}
}
}
StringBuilder sb=new StringBuilder();
for(int y=0;y<allMembers.size();y++){
Integer temp1,temp2,res;
temp1=temp2=res=0;
for(int k=members.size()-1;k>=0;k--){
if(members.get(k).getMemberName().equals(allMembers.get(y))) {
temp1=this.members.get(k).getAmountIn();
temp2=this.members.get(k).getAmountShared();
res=temp1-temp2;
break;
}
}
sb.append(allMembers.get(y)).append(" ").append(res.toString()).append("\n");
}
Money.save(new File(outFile),sb.toString());
}
public static void save(File file, String textToSave) {
file.delete();
try {
BufferedWriter out = new BufferedWriter(new FileWriter(file));
out.write(textToSave);
out.close();
} catch (IOException e) {
}
}
public void setAllMembers(String file){
this.readFile(file);
int n=Integer.parseInt(this.allData.get(0));
int k=1;
for(;k<=5;k++){
this.allMembers.add(allData.get(k));
}
String delims="[ ]+";
for(;k<allData.size();k++){
Member member=new Member();
member.setMemberName(allData.get(k));
k=k+1;
String[] tokens = allData.get(k).split(delims);
member.setInitAmount(Integer.parseInt(tokens[0]));
int tempCount=Integer.parseInt(tokens[1]);
member.setFriendsCount(tempCount);
int j=0;
while(j<tempCount){
k=k+1;;
member.setFriends(allData.get(k));
j++;
}
members.add(member);
}
}
public void readFile(String file) {
BufferedReader br;
try{
br=new BufferedReader(new FileReader(file));
String line=br.readLine();
while(line!=null){
allData.add(line);
line=br.readLine();
}
}catch(Exception e){
e.printStackTrace();
}
}//end
}
class Member{
String memberName;
int initAmount;
List<String> friends;
int amountIn;
int friendsCount;
int amountShared;
Member(){
friends=new ArrayList<String>();
this.amountIn=0;
amountShared=0;
}
public void setMemberName(String name){
this.memberName=name;
}
public String getMemberName(){
return this.memberName;
}
public void setFriendsCount(int count){
this.friendsCount=count;
}
public Integer getFriendsCount(){
return this.friendsCount;
}
public void setFriends(String friends){
this.friends.add(friends);
}
public List<String>getFriends(){
return this.friends;
}
public void setInitAmount(int amount){
this.initAmount=amount;
}
public int getInitAmount(){
return this.initAmount;
}
public void setAmountIn(int amount){
this.amountIn=amount;
}
public int getAmountIn(){
return this.amountIn;
}
public void setAmountShared(int amount){
this.amountShared=amount;
}
public int getAmountShared(){
return this.amountShared;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment