package Ġcom . example . kotlin project Ċ Ċ import Ġjava . lang . StringBuilder Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġa Ġ= ĠListNode (- 1 0 ) ĊĠĠĠ Ġval Ġb Ġ= ĠListNode (- 3 ) ĊĠĠĠ Ġval Ġc Ġ= ĠListNode ( 0 ) ĊĠĠĠ Ġval Ġd Ġ= ĠListNode ( 3 ) ĊĠĠĠ Ġval Ġe Ġ= ĠListNode ( 9 ) ĊĠĠĠ Ġa . next Ġ= Ġb ĊĠĠĠ Ġb . next Ġ= Ġc ĊĠĠĠ Ġc . next Ġ= Ġd ĊĠĠĠ Ġd . next Ġ= Ġe ĊĠĠĠ Ġe . next Ġ= Ġc ĊĠĠĠ Ġvar Ġresult Ġ= Ġdetect Cycle ( a ) ĊĠĠĠ Ġprint (" result Ġis Ġ${ result ?. ` val ` }") Ċ } Ċ Ċ fun Ġdetect Cycle ( head : ĠListNode ?): ĠListNode ? Ġ{ ĊĠĠĠ Ġif Ġ( head ?. next Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġfast Ġ= Ġhead ĊĠĠĠ Ġvar Ġslow Ġ= Ġhead ĊĠĠĠ Ġwhile Ġ( fast ?. next Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfast Ġ= Ġfast ?. next ?. next ĊĠĠĠĠĠĠĠ Ġslow Ġ= Ġslow ?. next ĊĠĠĠĠĠĠĠ Ġif Ġ( fast Ġ== Ġslow ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( fast ?. next Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġfast Ġ= Ġhead ĊĠĠĠ Ġwhile Ġ( fast Ġ!= Ġslow ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfast Ġ= Ġfast ?. next ĊĠĠĠĠĠĠĠ Ġslow Ġ= Ġslow ?. next ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfast Ċ } ĊĊ Ċ class ĠListNode ( var Ġ` val `: ĠInt ) Ġ{ ĊĠĠĠ Ġvar Ġnext : ĠListNode ? Ġ= Ġnull Ċ }