多米诺骨牌游戏

篮之新喜  论坛元老 | 2024-9-26 15:08:39 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1015|帖子 1015|积分 3055

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题描述

多米诺骨牌游戏规则非常简朴,将骨牌按肯定间距的尺寸排成单行,或分行排成一片。推倒第一张骨牌,其余发生连锁反应依次倒下,或形成一条长龙,或形成一幅图案。
小 A 觉得多米诺骨牌超级没意思,以是他想了点小花招。
小 A 将 n 个多米诺骨牌放在一条线上,每一块都垂直竖立。他同时将一些骨牌向左或向右推倒。 每过一秒,被推向左边或右边的骨牌会将左边或右边的相邻骨牌推倒。当一个骨牌,其左边倒向它的骨牌数目与其右边倒向它的骨牌数目相等时,由于力的平衡,该骨牌将依然保持竖立。
给定小 A 最初推骨牌的方向,求出末了依然保持竖立的骨牌数目和位置。
输入格式

输入数据第一行包括一个整数 n(1≤n≤3000),表示这一行多米诺骨牌的数目。下一行包括一个长度为 n 的字符串,字符串的第 i 个字符意义如下:
“L”,第 i 个字符将要被向左推。
“R”,第 i 个字符将要被向右推。
“.”,第 i 个字符不会被推。
输出格式

首先输出保持竖立的骨牌数目。假如保持竖立的骨牌数目不为 0,下一行输出保持竖立的骨牌的位置,骨牌位置从 1 到 n。
每两个数之间用一个空格隔开,注意末了一个数后面没有空格。
输入样例
14
.L.R…LR…L…
5
R…
1
.
输出样例
4
3 6 13 14
0
1
1
  1. def solution(num, data):
  2.     # Please write your code here
  3.     pre  = ""
  4.     while pre != data:
  5.         pre = data
  6.         data = data.replace("R.L","X")
  7.         data = data.replace("R.","RR")
  8.         data = data.replace(".L","LL")
  9.         data = data.replace("X","R.L")
  10.     num = 0
  11.     upright_positions = []
  12.     for i in range(len(data)):
  13.         if data[i]== ".":
  14.             num += 1
  15.             upright_positions.append(i+1)
  16.     if num == 0:
  17.         return str(num)
  18.     return f"{num}:{','.join(map(str, upright_positions))}"
  19. if __name__ == "__main__":
  20.     # 直接打印函数的返回值
  21.     print(solution(14, ".L.R...LR..L..") == "4:3,6,13,14")
  22.     print(solution(5, "R....") == "0")
  23.     print(solution(1, ".") == "1:1")
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表