From 81be7dad34367d86df5bf2d2b480e3c3bc124cdc Mon Sep 17 00:00:00 2001
From: aristidecod <sie.ouattara@etu.univ-amu.fr>
Date: Tue, 21 Jan 2025 22:17:19 +0100
Subject: [PATCH] try to implement solutionFractionnelle

---
 .idea/misc.xml                             |   2 +-
 out/production/aroTP2/App.class            | Bin 682 -> 728 bytes
 out/production/aroTP2/InstanceReader.class | Bin 2335 -> 2335 bytes
 out/production/aroTP2/Loot.class           | Bin 881 -> 1009 bytes
 src/App.java                               |   3 ++-
 src/Backpack.java                          |  30 +++++++++++++++++++++
 src/InstanceReader.java                    |   1 -
 src/Loot.java                              |  16 ++++++++++-
 8 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/.idea/misc.xml b/.idea/misc.xml
index a346fd7..1b2d693 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="18" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_22" default="true" project-jdk-name="22" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index f3dffbcc762d201aabffbb6ae573bd035da8db2d..f385ca79a766fbfe129b15dfa2d50392d0a867a1 100644
GIT binary patch
delta 295
zcmZ3*dV`hg)W2Q(7#J9w7>p-!br^Fo2r>w<GYIoAh%m4*GH^I0CTABUCTBA;a2Mwn
zl{i%fC6;97b25lAh_f?D@GwX+NKKq?%q_zp%g!Lj!ywO~F!8Pxqtavv#^sC#lMgT&
z)+;hFF@OLQ10w?~0~-S)gE9jHgFXWz10w?i1FP0{2F8sH3=B*RDhv!@X$A&n22}<I
z1|En41~mqC1_lOB1`P&H1}3oPNCqabp_029*dw<ya0+p4W8m@8-o_xXi9u9*8-p~$
zKp`gv7LYXzybNp%f(+~o5)2$*)5RbrFlaGoGcYjlGVn0yFz7NcGUzcdFt9K%f*oiG
Hc9#(VumdBR

delta 250
zcmcb?x{8(S)W2Q(7#JAr81yD`b?|aB2r>w<GYIoAh%kswJZj7>&LF|gAj!iZ#UMSI
znbC?-cCsDgaz^dR&lnBsWf+(kK!AyXk%5(gje(Itj)8$epMjBqk%57MRcku~<3<Js
z1||l11_rP+0|PUI0s{jB4@3cjB7+hG0|O_6GJ^^O6IgQ~0~6R#(cKK}k=q$Kg}Amc
z@c3+E5YXPnAcioEkAazi!HR*EftP`eL4<)FY^oSUCxa@38Uq6ZF9QdII)erSBZDRb
S0|N^KBZC$LBZCguJ-Pt$h8Z0I

diff --git a/out/production/aroTP2/InstanceReader.class b/out/production/aroTP2/InstanceReader.class
index bcce837946a70025a3a851972fc22b8e964e1cc4..9a1d5b11a0914dac9a5b1a1a0bdda4d0958bdced 100644
GIT binary patch
delta 115
zcmbO)G+&70)W2Q(7#J9wHgZ(3+6pifFfxd0_+%xPCF<uS=B4ZVCuOB3mso3t@v|`$
zaWVKZ6!S2oGh_%baPzY<lyNbXGgPoMRPr!XF;s7!$jZdHc|V&wlVm9aGebT@Awvm6
T4FdxM7Xu?hEkiv+BZDLW)BzfJ

delta 116
zcmbO)G+&70)W2Q(7#JArHgZ(33i7it6mT&VG8C~h6!S2YFqCfI%gV&4BfwD3$RMiW
zla*MOsGpOVm#*)hl$DxXVyzj*&&E*6#o)_O#lw)!kRiapy?H;IJCkHS12aPzLj^-M
ULk$B10~Z4$LoGu+LnDJE0Krijpa1{>

diff --git a/out/production/aroTP2/Loot.class b/out/production/aroTP2/Loot.class
index 677c206f5b43a39187728543b3333c45abeee666..07f1b7ef8b118f561e0965b6f117e4420a682f7c 100644
GIT binary patch
delta 497
zcmey!_K}_I)W2Q(7#J9w7>p-!B{_03a4-n+FbFXSGcvFiC6;97Gcqu`2{AA*i1ILq
zF^DrVi039|r#k27B`21IXO?6*=jRodB<7VAGct&4czU``oL0-vk)B!-1kuZ^q3JeR
zkWoj5gF%gvft68#QGt=4jX{HpL6bp?ok1I9sLo_R#zR7k3_PBBd8tLtIf=!^sm1IJ
z`jfSpv{(!o8RRDGG09CXXA-JsW?*38X5e7}0e&bg#30PTz`)GF$iT`V!NABM$-uyn
z#=y(~QY)dgoq<tHdMg9FmdsWLUM=Z1nYO&G3<4V&7#Nrsq!<_&#28o^7#LU?SQywC
zI2qU(_!u}C#2Gjlq!}0(6d-0W$S}x)EM$<V2V2g_z`!8E0J5HmfssLuK^|(U4cHM3
z3_@C47}&M8Fz{+^VG!8GAi}_~0d5@|14uUy*mxc=TL@}ABZC5iBGe>(21c+PE69X(
z2+a;)Q2`{~tWe#|3`$^S$_y$D3=A9$j11}wj0~y_x(o~qTnvm1dJF~(MhubwW92%g

delta 343
zcmey!{*jIA)W2Q(7#JAr7<4CcC2<KcFfa)6FbFXSPwbIl5!3MWoVd1jvNfZYAU_*}
z0vCfKgAzM~GDv~S<VMCravTh5j10_-3XF^lJf3-ZsYT8?iN(dK#q124j0~!i*D|Uy
zvomN<ZeTL5XJTMr;AY@q00Dk5&BVaSz{()Pz{nuVz`zj6z{J4Jz`($-wVi=cOL{8<
zyOzvW2HuSf3=B*RVhjunLJTYn3=Av`EDWp+oD6IXd<^Ui;tUK73J`4!5)6_cvl;lo
z)-ZyMVgOkLvPOy_QyOZI1p`Qcfq_qJ3j@2>76#s33<3-c8{pQkF@UskfsN(?v-zM#
pGc(A5Rmn2QF)%Q2FfcO6GcYo!GN>~!FmN$2GH5VpG3YQz0swR1BYFS;

diff --git a/src/App.java b/src/App.java
index 919c748..7aa8157 100644
--- a/src/App.java
+++ b/src/App.java
@@ -3,6 +3,7 @@ import java.util.List;
 public class App {
     public static void main(String[] args) throws Exception {
        Backpack backpack= new InstanceReader().read("src/sac0");
-        System.out.println(backpack);
+       backpack.sortByRatio();
+       System.out.println(backpack);
     }
 }
diff --git a/src/Backpack.java b/src/Backpack.java
index 121d485..10ba315 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -1,8 +1,11 @@
+import java.util.Comparator;
 import java.util.List;
 
 public class Backpack {
     int capacity;
     List<Loot> loots;
+    int sfValuee = 0;
+    int sfWeight = 0;
 
     public Backpack(int capacity, List<Loot> loots) {
         this.capacity = capacity;
@@ -12,4 +15,31 @@ public class Backpack {
     public String toString(){
         return capacity +"\n"+loots;
     }
+
+    /**
+    Méthode pour trier les objets par ordre décroissant selon leur ratio
+    */
+    public void sortByRatio(){
+        loots.sort(Comparator.comparing(Loot::getRatio).reversed());
+    }
+
+    public void solutionFractionnelle(){
+        this.sortByRatio();
+
+        for(Loot loot : loots){
+            if(loot.getWeight() > this.capacity){
+                sfValuee += (loot.getValue() * loot.getWeight()) / (capacity - sfWeight);
+                sfWeight += capacity;
+            }
+            else {
+                sfValuee += loot.getWeight();
+                sfWeight += loot.getWeight();
+            }
+        }
+    }
+
+    public int getSfValuee() {
+        return sfValuee;
+    }
+
 }
diff --git a/src/InstanceReader.java b/src/InstanceReader.java
index 58e01ae..1724721 100644
--- a/src/InstanceReader.java
+++ b/src/InstanceReader.java
@@ -23,5 +23,4 @@ public class InstanceReader {
         return new Backpack(capacity,loots);
     }
 
-
 }
diff --git a/src/Loot.java b/src/Loot.java
index 46c20c0..e2a85e0 100644
--- a/src/Loot.java
+++ b/src/Loot.java
@@ -1,12 +1,26 @@
 public class Loot {
     int weight, value;
+    float ratio;
 
     public Loot(int weight, int value) {
         this.weight = weight;
         this.value = value;
+        this.ratio = (float) weight/value;
     }
 
     public String toString(){
-        return weight+" "+value;
+        return weight+" "+value+" "+ratio;
+    }
+
+    public float getRatio(){
+        return ratio;
+    }
+
+    public int getWeight(){
+        return weight;
+    }
+
+    public int getValue(){
+        return value;
     }
 }
-- 
GitLab