我正在寻找一种数字求和算法.让我概述一下基本原则:
说你有一个号码:18268.
1 + 8 + 2 + 6 + 8 = 25
2 + 5 = 7
Run Code Online (Sandbox Code Playgroud)
7是我们的最终号码.它基本上是添加整数的每个数字,直到我们得到一个(也称为"核心")数字.它经常被数字命理学家使用.
我正在寻找一种算法(不必是语言特定的).我在过去的一小时内搜索了Google,其中包括digit sum algorithm诸如此类的东西,但没有得到合适的结果.
我需要将字节数组中以数字表示的数字除以非标准字节数.它可能是5个字节或1 GB或更多.应使用表示为字节数组的数字进行除法,而不对数字进行任何转换.
我在数学论坛上看到一个问题,一个人正在讨论一遍又一遍地将数字加起来直到达到一个数字.(即"362"将成为"3 + 6 + 2",将成为"11"......然后"11"将成为"1 + 1"将成为"2"因此"362"将返回2 ...我写了一些很好的代码来得到答案并发布它只是为了超出一个用户提出模数9中的任何数字等于这个"无限数字总和",我检查了他是对的......好吧几乎是正确的,如果返回零,你必须用"9"将其切换出来,但这是一个非常快速的解决方案......
362 = 3 + 6 + 2 = 11 = 1 + 1 = 2
要么...
362%9 = 2
Anways,mod9方法非常适合无限地添加数字之和,直到你只剩下一个数字......但是只做一次(即362只会返回"11")...可以有人认为快速算法?
我只需要过滤掉只包含数字和/或一组标点符号的字符串.
我已经尝试检查每个字符,然后总结布尔条件以检查它是否等于len(str).是否有更多pythonic方式来做到这一点:
>>> import string
>>> x = ['12,523', '3.46', "this is not", "foo bar 42", "23fa"]
>>> [i for i in x if [True if j.isdigit() else False for j in i] ]
['12,523', '3.46', 'this is not', 'foo bar 42']
>>> [i for i in x if sum([True if j.isdigit() or j in string.punctuation else False for j in i]) == len(i)]
['12,523', '3.46']
Run Code Online (Sandbox Code Playgroud) 我遇到了一个处理python isdigit函数的奇怪问题.
例如:
>>> a = u'\u2466'
>>> a.isdigit()
Out[1]: True
>>> a.isnumeric()
Out[2]: True
Run Code Online (Sandbox Code Playgroud)
为什么这个角色是数字?
有什么办法让这个返回False,谢谢?
编辑,如果我不想将其视为数字,那么如何过滤掉它?
例如,当我尝试将其转换为int时:
>>> int(u'\u2466')
Run Code Online (Sandbox Code Playgroud)
然后UnicodeEncodeError发生了.
可能重复:
在特定范围内的Javascript中生成随机数?
有人可以告诉我如何使用Math.random()或javascript中的其他方式获得一位数随机数(1,2,3,..不是0.1,0.2,..或1.0,5.0,..)?
我只需要知道如何制作一个接受最多2位数字的正则表达式
我现在所拥有的只是
^[0-9]{2}$
Run Code Online (Sandbox Code Playgroud)
这将匹配一个正好2位数的数字,但我不知道如何指定"匹配一个最多2位数的数字".
此外,如果有办法确保这个数字不是0那么这将是一个加号,否则我可以检查与Bash.
谢谢 !:)
请注意,输入变量来自读取-p"make a choice"Number
编辑我的帖子 - 在背景中显示代码:
while true; do
read -p "Please key in the number of the engineer of your choice, or leave empty to select them all: " Engineer
if [ -z "$Engineer" ]; then
echo "No particular user specified, all engineers will be selected."
UserIdSqlString="Transactions.Creator!=0 "
break
else
if [[ $Engineer =~ ^[0-9]{1,2}$ && $Engineer -ne 0 ]]; then
echo "If you want a specific engineer type their number otherwise …Run Code Online (Sandbox Code Playgroud) 我使用"De Bruijn"算法来发现大数(最多64位)的二进制位数.
例如:
我发现使用基于De Bruijn的表查找让我有能力比传统方式(功率,方形......)计算x100倍.
根据该网站,2 ^ 6具有用于计算64位数的表.这将是c#中暴露的表
static readonly int[] MultiplyDeBruijnBitPosition2 = new int[64]
{
0,1,2,4,8,17,34,5,11,23,47,31,63,62,61,59,
55,46,29,58,53,43,22,44,24,49,35,7,15,30,60,57,
51,38,12,25,50,36,9,18,37,10,21,42,20,41,19,39,
14,28,56,48,33,3,6,13,27,54,45,26,52,40,16,32
};
Run Code Online (Sandbox Code Playgroud)
(我不知道我是否正确地从该网站带来了桌子)然后,根据R ..评论这里.我应该使用它来使用带有输入uint64号的表.
public static int GetLog2_DeBruijn(ulong v)
{
return MultiplyDeBruijnBitPosition2[(ulong)(v * 0x022fdd63cc95386dull) >> 58];
}
Run Code Online (Sandbox Code Playgroud)
但是c#编译器不允许我使用" 0x022fdd63cc95386dull ",因为它溢出了64位.我必须使用" 0x022fdd63cc95386d "代替.
使用这些代码.问题是我没有得到给定输入的正确结果.
例如,做1.000.000计算的数字:17012389719861204799(使用64位)这是结果:
我试图理解"De Bruijn"是如何工作的,我该如何解决这个问题并为c#创建一个最终代码来计算多达64位的数字.
UDPATE和不同解决方案的基准
我正在寻找最快的算法来获得二进制数字的位数,无符号给定数量的64位在c#中(称为ulong).
例如:
传统的2和平方功率非常慢.只需10000次计算就需要1500ms才能得到答案.(100M计算需要数小时).
在这里,Niklas B., …
我希望我的knitr代码生成的所有数字看起来都不像一个老式的计算器.
是否有任何选项可以获得最后一个数字(用10而不是e或E)?
options(scipen = ...)似乎没有那个选项.
我一直在搜索信息,我发现可以使用软件包siunitx直接在LaTex中完成,写下这样的每个数字\num {1e-10}
但是我想knitr自动为所有数字做过,包括表格中的数字.
PD:当我打印东西时,我该如何避免[1]?
PD2:也许是gsub的东西?
PD3:
我回到这个问题了.想象一下,我没有定义自己的表,但我从回归中得到它并使用xtable来生成它.
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs}
\sisetup{ group-minimum-digits = {3}, group-separator = {,}, exponent-product = \cdot }
\begin{document}
<<r, results='asis'>>=
library(xtable)
data(tli)
fm2 <- lm(tlimth ~ sex*ethnicty, data = tli)
xxx <- xtable(fm2)
print(xxx, booktabs = TRUE)
@
\end{document}
Run Code Online (Sandbox Code Playgroud)
但它效果不好.我应该使用哪些选项?
这是print +"booktabs = T"+我的函数beauty()的结果.
问候.
我不知道为什么它产生两个表而不是1.而且数字没有正确对齐.无论如何,我不想依赖我的beauty()函数但只使用suintx,我该怎么办?
我希望将一个整数,如23457689更改为689,12457245到245等.
我不要求对数字进行舍入,也不希望必须转换为String.
有关如何在Python 2.7中完成此操作的任何想法?