• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

噢三个数字之间纠缠不清的故事.

php 搞代码 4年前 (2022-01-24) 17次浏览 已收录 0个评论

噢3个数字之间纠缠不清的故事…
嘿嘿,标题党又来了。话说朋友问我个问题,如何判断3个数字是顺的?比如 123 321 456 654 465 …901 901 019

也就是根据数值判断是3个数字是否是相连内的成员

我的想法是 先分割,取得3个数里最小的,然后判断剩下的两个是否都在里面
比如 321 取得1 然后判断 23 是否存在,如果存在就能确定.

特殊的901 直接定义一个数组进行判断,判断是否包含0 如果是 判断是否包含9和1 …(这里可能需要排除012)

不知道各位有没有其他更简便的方式?

——解决方案——————–
可以挨着判断,比如一个为234,取出2,那么第二位就是3或者1,记录下是增还是减,然后就可以递归判断后面的n位,这样可以适合多个数字的判断
——解决方案——————–
我的想法是:只真对数子哈:
直接将之截取放入数组中!然后数组安小-》大排个序,在取中间数去和两边的数比较判断;

——解决方案——————–
想到一个,019 特殊情况 之和为10 ,其他情况之和为中间数*3 . 代码如下:

PHP code

function foo($s){ $arr=str_split($s); if(in_array('9',$arr)) return (array_sum($arr)==10) ; sort($arr,SORT_NUMERIC); return array_sum($arr)==$arr[1]*3 ;}var_dump(foo('019')); //bool(true)var_dump(foo('243')); //bool(true)
------解决方案--------------------
一般的,对于 $n, $n∈{123 321 456 654 465 ..}
可以有:
$t = str_split($n);
if( array_sum($t) == (reset($t)+end($t))*count($t)/2 ) echo 'ok';

但是对于认定 901、109 为连续,就超出一般的认知了
------解决方案--------------------
不能判断能够相加被3除就行,比如 258..
------解决方案--------------------

PHP code

$temp = '0123456789 089 019';$samples = array(123, 321, 456, 654, 465, 901, 109, '019', 890, 908, 135, 250);foreach ( $samples as $value ) { $ds = str/本文来源gaodai#ma#com搞*!代#%^码网%搞代gaodaima码_split( $value ); sort( $ds ); $ds = implode( '', $ds ); $result = ( strstr( $temp, $ds ) !== false ) ? 'yes' : 'no'; echo "{$value} - {$ds} : {$result}
";}


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:噢三个数字之间纠缠不清的故事.

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址