Exactly three adjacent 3 in lists

From Rosetta Code
Revision as of 06:17, 7 December 2021 by CalmoSoft (talk | contribs) (Created page with "{Draft task}} ;Task:Let given 5 lists of ints: <br>list[1] = [9,3,3,3,2,1,7,8,5] <br>list[2] = [5,2,9,3,3,7,8,4,1] <br>list[3] = [1,4,3,6,7,3,8,3,2] <br>list[4] = [1,2,3,4,5,...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

{Draft task}}

Task
Let given 5 lists of ints:


list[1] = [9,3,3,3,2,1,7,8,5]
list[2] = [5,2,9,3,3,7,8,4,1]
list[3] = [1,4,3,6,7,3,8,3,2]
list[4] = [1,2,3,4,5,6,7,8,9]
list[5] = [4,6,8,7,2,3,3,3,1]

Print 'true' if the value '3' appears in the list exactly 3 times and they are adjacent ones otherwise print 'false'.

Ring

<lang ring> see "working..." + nl

list = List(5) list[1] = [9,3,3,3,2,1,7,8,5] list[2] = [5,2,9,3,3,7,8,4,1] list[3] = [1,4,3,6,7,3,8,3,2] list[4] = [1,2,3,4,5,6,7,8,9] list[5] = [4,6,8,7,2,3,3,3,1]

for n = 1 to 5

   strn = list2str(list[n])
   cnt = count(strn,"3")
   if cnt = 3
      for m = 1 to len(list[n])-2
          if list[n][m] = 3 and list[n][m+1] = 3 and list[n][m+2] = 3
             flag = 1
             exit
          ok
       next
    else
       flag = 0   
    ok
    if flag = 1
       see "" + n + " true" + nl  
    else
       see "" + n + " false" + nl    
    ok

next

see "done..." + nl

func count(cString,dString)

      sum = 0
      while substr(cString,dString) > 0
              sum++
              cString = substr(cString,substr(cString,dString)+len(string(sum)))
      end
      return sum

</lang>

Output:
working...
1 true
2 false
3 false
4 false
5 true
done...