2つのハッシュマップ(resourcesとrequiredResources)があります。
目標はリソースのハッシュマップの量を減らすことですが、それは両方のリソースが十分ある場合にのみ発生します。
// String = name of resources available
// Integer = amount of resources available
Map<String, Integer> resources = new HashMap<>();
resources.put("gold", 10);
resources.put("silver", 10);
// String = name of resource needed
// Integer = amount of resource needed
Map<String, Integer> neededResources = new HashMap<>();
neededResources.put("gold", 2);
neededResources.put("silver", 3);
このサンプルの場合、4回目の試行では十分なシルバーがなく、ゴールドの値も変化しないため、リソースが3回必要になります。
私はJavaの初心者です。これまでのところ、両方を反復処理してみましたが、読みづらくなり、この作業では私の試みが難しすぎるように見えました。
これはあなたが求めているものかもしれないと思います。コードは、セットアップコードの後に挿入できます。
可能な支出の数を見つける:
int n = resources.entrySet().stream().mapToInt(entry -> entry.getValue()/neededResources.getOrDefault(entry.getKey(), 0)).min().getAsInt();
System.out.println(n);
プリント3
消費する:
resources.replaceAll((k,v) -> v-n*neededResources.getOrDefault(k,0));
System.out.println(resources);
{gold = 4、silver = 1}を印刷します
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加