Skip to content

Instantly share code, notes, and snippets.

View cdmunoz's full-sized avatar

Carlos Daniel cdmunoz

View GitHub Profile
package hakerrank
import kotlin.collections.*
import kotlin.io.*
import kotlin.text.*
/**
* Hackerrank's Sherlock and Array
* https://www.hackerrank.com/challenges/sherlock-and-array
*
@cdmunoz
cdmunoz / LonelyInteger.kt
Created May 28, 2019 02:09
Kotlin's solution for Hackerrank's Lonely Integer excercise https://www.hackerrank.com/challenges/lonely-integer/problem
package hakerrank
import java.io.*
import java.math.*
import java.security.*
import java.text.*
import java.util.*
import java.util.concurrent.*
import java.util.function.*
import java.util.regex.*
@cdmunoz
cdmunoz / FindTheMedian.kt
Created May 28, 2019 01:41
Hackerrank's find the median excercise in Kotlin https://www.hackerrank.com/challenges/find-the-median
fun findMedian(arr: Array<Int>): Int {
val size = arr.size
arr.sort()
return arr[(size / 2)]
}
@cdmunoz
cdmunoz / MissingNumbers.kt
Last active May 11, 2019 14:40
Solution in Kotlin for Hackerrank's Missing Numbers problem:https://www.hackerrank.com/challenges/missing-numbers/problem
package hakerrank
import java.io.*
import java.math.*
import java.security.*
import java.text.*
import java.util.*
import java.util.concurrent.*
import java.util.function.*
import java.util.regex.*
@cdmunoz
cdmunoz / TimeInWords.kt
Created May 7, 2019 03:13
Hacker Rank's TimeInWords in Kotlin
package hakerrank
import java.io.*
import java.math.*
import java.security.*
import java.text.*
import java.util.*
import java.util.concurrent.*
import java.util.function.*
import java.util.regex.*
@Test
fun saveAuction() {
auction.apply {
id = 100L
title = "auction to save 1"
status = Auction.Status.COMPLETE
}
runBlocking {
auctionsCreationViewModel.saveAuction(auction)
}
@RunWith(JUnit4::class)
class AuctionCreationViewModelTest {
@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()
lateinit var auctionsCreationViewModel: AuctionsCreationViewModel
lateinit var auctionCreationRepository: AuctionCreationRepository
val auction = Auction()
fun <T> LiveData<T>.observeOnce(onChangeHandler: (T) -> Unit) {
val observer = OneTimeObserver(handler = onChangeHandler)
observe(observer, observer)
}
class OneTimeObserver<T>(private val handler: (T) -> Unit) : Observer<T>, LifecycleOwner {
private val lifecycle = LifecycleRegistry(this)
init {
lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_RESUME)
}
override fun getLifecycle(): Lifecycle = lifecycle
override fun onChanged(t: T) {
class AuctionsCreationViewModel : ViewModel(), CoroutineScope {
private var auction: MutableLiveData<Auction> = MutableLiveData()
private var auctionCreationRepository = AuctionCreationRepository()
private var onClickSaveTrigger = SingleLiveEvent<Unit>()
private val job = Job()
override val coroutineContext: CoroutineContext
get() = job + Dispatchers.Main