Kotlin ile Kazananı Bulmak

Kotlin dili ile programcılık becerinizi geliştirmek için örnek problemleri çözmeye devam edilim. Bu yazıda ele alacağımız problem ve kodları aşağıdaki gibidir.

Problem

Bilardo oyunu, yeşil bir bilardo masasının etrafında 3 topu vuran iki oyuncu ile oynanır. Birkaç turdan oluşan bu oyunda, oyuncular performanslarına göre puan almaktadır. Tüm turlar oynandıktan sonra, her oyuncunun toplam puanı, tüm turlardaki puanlar toplanarak belirlenir ve daha yüksek puan alan oyuncu oyunu kazanır.

Sıcak Spor Kulübü, bu amaçla bir bilardo oyunu düzenliyor. Sıcak Spor Kulübü Müdürü, kazananı belirlemek için kuralları değiştirerek oyuna kendi dokunuşunu katmaya karar verir. Bu yeni düzenleme ile her turun sonunda, her oyuncu için toplam puan hesaplanıp o turun lideri belirlenir. Tüm turlar bittiğinde, oyundaki herhangi bir turun sonunda maksimum puan farkına sahip olan oyuncu kazanan ilan edilir.

5 turlu bir oyun için aşağıdaki skor sayfasını göz önünde bulunduralım:

TUROYUNCU 1OYUNCU 2
114082
289134
390110
4112106
58890

Bu oyunda her turdan sonra her iki oyuncunun, liderin ve liderin toplam puanları aşağıda verilmiştir:

TUROYUNCU 1OYUNCU 2LİDERFARK
114082OYUNCU 158
2229216OYUNCU 113
3319326OYUNCU 27
4431432OYUNCU 21
5519522OYUNCU 23

Yukarıdaki tabloda her turun puanı toplanarak oyuncunun o turdaki toplam puanı hesaplanmıştır. Bu durumdu , Oyuncu 1 1.turun sonunda 58 maksimum farkı ile birinci olmuştur.

Amacımız Kotlin dili ile verilen bilgileri kullanarak kazananı bulmaktır.

Giriş

Girişin ilk satırı (N) oyundaki tur sayısını göstermektedir. 2.satırdan itibaren N+1’nci satıra kadar olan satırlar oyuncuların skorunu tanımlar. Oyuncu skorları arasında boşluk olacak şekilde 1. ve 2. oyuncular için girilir.

Çıkış

Çıktınız W ve L iki tamsayı içeren tek bir satırdan oluşmalıdır. Burada W, 1 veya 2’dir ve kazananı belirtir; L ise kazananın elde ettiği maksimum puan farkıdır.

Örnek

Giriş
5

140 82
89 134
90 110
112 106
88 90

Çıkış

1 58

fun readLn() = readLine()!!
fun readArr() = readLn().split(" ")
fun readToInt() = readArr().map { it.toInt() }
fun main() {
    var N = readLn().toInt()
    var p1 = 0
    var p2 = 0
    var W = 1    
    var L = 0
    var dif:Int
    
    repeat(N) {
        val (A, B) = readToInt()
        p1 += A
        p2 += B
        dif  = p1 - p2
        if (dif > 0) {
            if (dif > L) {
                L = dif
                W = 1
            }
        }else{
            if (dif > L) {
                L = dif
                W = 2
            }
        }
    }
    println("$W $L")
}
Kotlin ile kazananı bulmak

**Bana en büyük desteğiniz yazılarıma yorum yapmanız ve paylaşmanızdır.