IC
submit_default <- read.table("VK_Chalenge/baseline.txt")
library(stringr)
for(row_num in 1:nrow(submit_default))
{
# если в предсказании имеется нужный идентификатор
# Отладочно
# row_num <- 10
# predicted_user <- 1921
predicted_user_orig <- submit_default[row_num , "V1"]
predicted_user <- as.numeric(str_remove(predicted_user_orig , ":"))
# отбираем нужные предсказания
selected_predict <- df_result[df_result$my_target == predicted_user, ]
selected_predict <- df_result[df_result$my_target == predicted_user, ]
# где больше имеюегося
selected_predict <- selected_predict[ selected_predict$from > selected_predict$my_target , ]
if(nrow(selected_predict ) >0 ){
#Находим уже имеющиеся значения
available_friens <- submit_default[row_num, "V2"]
available_friens <- as.data.frame(as.numeric(unlist(strsplit(available_friens, ","))))
names(available_friens) <- c("Friend_avail")
# сортируем по убыванию
available_friens <- as.data.frame(sort(available_friens$Friend_avail, decreasing = TRUE ))
names(available_friens) <- c("Friend_avail")
as.data.frame(available_friens)
available_friens
names(available_friens) <- c("Friend_avail")
# отбираем добавлемых друзей
added_friend <- as.data.frame(selected_predict$from)
added_friend <- unique(added_friend)
names(added_friend) <- c("added_friend")
# удаляем тех друзей которые уже есть
added_friend <- as.data.frame(added_friend[!(added_friend$added_friend %in% available_friens$Friend_avail) , ])
names(added_friend) <- c("added_friend")
added_friend <- as.data.frame(sort(added_friend$added_friend, decreasing = TRUE ))
names(added_friend) <- c("added_friend")
# добавляем не больше 10 самых первых
added_friend <- head(added_friend ,10)
# Смотрим сколько мы можем добавить друзей из нашего алгоримта
NeedSpace <- nrow(added_friend )
# сколько надо удалить из фрейма безлайна
RemovieFriend <- NeedSpace + nrow(available_friens) -10
# если количество удалений больше 0 значит удаляем самых младших
if (RemovieFriend > 0 ){
available_friens <- head(available_friens , 10 -RemovieFriend)
}
names(available_friens) <- c("Friend")
names(added_friend)<- c("Friend")
# новый список френдов
new_friend <- rbind (available_friens,added_friend)
new_friend <- paste(new_friend[,1], collapse = ",")
print (predicted_user)
}
else
{
new_friend <- submit_default[row_num, "V2"]
}
insert_row <- cbind( predicted_user_orig, new_friend)
if (row_num == 1) {
write.table(insert_row, "VK_Chalenge/submit.txt", append = FALSE, sep = " ", dec = ".", quote = FALSE,
row.names = FALSE, col.names = FALSE)
}else
{
write.table(insert_row, "VK_Chalenge/submit.txt", append = TRUE, sep = " ", dec = ".", quote = FALSE,
row.names = FALSE, col.names = FALSE)
}
}
