Помогите создать программу Kotlin
У фирмы на складе хранятся товары различных категорий. Существует список с данными о весе и категории товаров склада. Фирме необходимо перевезти максимальное количество (в штуках) товаров категории «B». При этом она может сделать одну перевозку общим весом в 15000 кг. Напишите программу, которая определит, сколько максимум товаров требуемой категории сможет перевезти фирма за один раз.
Входные данные:
Вводится натуральное число n – количество товаров на складе. Далее вводятся n строк с категорией и весом (в килограммах). В каждой из таких строк идет сначала категория (заглавная латинская буква), потом пробел, потом вес товара (натуральное число).
Выходные данные:
Вывести одно число – максимальное количество товаров (в штуках) категории «А», которые может перевезти фирма за один раз (общий вес товаров не должен превышать 20000 кг.).
Так, например, если программе на вход будут поданы следующие данные:
7
A 1000
B 11000
C 100
A 500
B 8000
B 1000
B 5000,
то она должна вывести число 3.
В поле краткого ответа введите число, которое получается в результате работы программы на входных данных из файла «6.1.txt»
import java.util.Scanner
fun main() {
val scanner = Scanner(System.`in`)
// Считываем количество товаров
val n = scanner.nextInt()
scanner.nextLine() // Переход на следующую строку
// Создаем список для хранения веса товаров категории "B"
val bWeights = mutableListOf<Int>()
// Считываем данные о товарах
repeat(n) {
val input = scanner.nextLine().split(" ")
val category = input[0]
val weight = input[1].toInt()
if (category == "B") {
bWeights.add(weight)
}
}
// Сортируем веса товаров категории "B" в порядке возрастания
bWeights.sort()
// Инициализируем переменные для подсчета количества товаров и суммарного веса
var totalWeight = 0
var itemCount = 0
// Итерируем по отсортированному списку и суммируем веса
for (weight in bWeights) {
if (totalWeight + weight <= 15000) {
totalWeight += weight
itemCount++
} else {
break
}
}
// Выводим результат
println(itemCount)
}
fun main() {
val n = readLine()!!.toInt()
var totalWeight = 0
var countB = 0
repeat(n) {
val (category, weight) = readLine()!!.split(" ")
val intWeight = weight.toInt()
if (category == "B" && totalWeight + intWeight <= 15000) {
totalWeight += intWeight
countB++
}
}
println(countB)
}
Важно:
Данный код предполагает, что входные данные находятся в стандартном вводе (консоль).
Если ваши данные находятся в файле “6.1.txt”, вам нужно будет модифицировать код, чтобы он считывал данные из этого файла.
Пример изменения кода для считывания из файла:
fun main() {
val file = File("6.1.txt")
val n = file.readLines()[0].toInt()
var totalWeight = 0
var countB = 0
for (i in 1 until n + 1) {
val (category, weight) = file.readLines()[i].split(" ")
val intWeight = weight.toInt()
if (category == "B" && totalWeight + intWeight <= 15000) {
totalWeight += intWeight
countB++
}
}
println(countB)
}
Пример использования с файлом:
Сохраните код в файл с именем main.kt.
Создайте файл 6.1.txt с входными данными.
Запустите программу из командной строки: kotlinc main.kt -include-runtime -d main.jar и затем java -jar main.jar
юб.ыпдбфвпджбэыварэжвафр