راه حل Hackerrank-Kanguroo در کاتلین – انجمن DEV
شما در حال طراحی یک نمایش سیرک با حیوانات مختلف هستید. برای یک عمل، دو کانگورو روی یک خط عددی به شما داده می شود که آماده پرش در جهت مثبت (یعنی به سمت بی نهایت مثبت) هستند.
شما باید راهی پیدا کنید تا هر دو کانگورو را در یک مکان در همان زمان به عنوان بخشی از نمایش بیاورید. در صورت امکان، YES را برگردانید، در غیر این صورت خیر را برگردانید.
مثال
x1=2
v1=1
x2=1
v2=2
پس از یک پرش، هر دو در x=3، (x1+v1=2+1،x2+v2=1+2) هستند، بنابراین پاسخ بله است.
شرح عملکرد
تابع کانگورو را در ویرایشگر زیر کامل کنید.
کانگورو دارای پارامتر(های) زیر است:
- int x1، int v1: موقعیت شروع و فاصله پرش برای کانگورو 1
- int x2, int v2: موقعیت شروع و فاصله پرش برای کانگورو 2
برمی گرداند
فرمت ورودی
یک خط منفرد از چهار عدد صحیح جدا شده با فاصله که مقادیر مربوطه x1،v1،x2 و v2 را نشان می دهد.
محدودیت ها
0 ورودی نمونه 0 خروجی نمونه 0 توضیح 0 دو کانگورو از مکان های زیر می پرند: ورودی نمونه 1 خروجی نمونه 1 کانگوروی دوم دارای یک مکان شروع است که جلوتر از مکان شروع کانگورو اول (به عنوان مثال x1>x2) جلوتر (به سمت راست) است زیرا کانگورو دوم با سرعت بیشتری حرکت می کند (به معنی v2>v1) و در حال حاضر جلوتر از کانگورو است. اولین کانگورو، اولین کانگورو هرگز نمی تواند به عقب بیفتد. بنابراین، ما NO را چاپ می کنیم. راه حل : 0 3 4 2
YES
از تصویر مشخص است که کانگوروها پس از تعداد پرش های مشابه (4 پرش) در همان مکان (شماره 12 روی خط اعداد) به هم می رسند و YES را چاپ می کنیم.0 2 5 3
NO
fun kangaroo(x1: Int, v1: Int, x2: Int, v2: Int): String {
var start_k1 = x1+v1
var startt_k2 = x2+v2
var answer =0
if(v1!= v2){
var v = Math.abs(v2-v1)
answer = (startt_k2-start_k1)%v
}
if (v1<v2 || answer!=0 ||v1==v2){
return "NO"
}
else{
return "YES"
}
}
fun main(args: Array<String>) {
val first_multiple_input = readLine()!!.trimEnd().split(" ")
val x1 = first_multiple_input[0].toInt()
val v1 = first_multiple_input[1].toInt()
val x2 = first_multiple_input[2].toInt()
val v2 = first_multiple_input[3].toInt()
val result = kangaroo(x1, v1, x2, v2)
println(result)
}