问题是导出一个公式,用于确定给定十进制数在给定基数中可能具有的位数.
例如:十进制数100006可分别由基数2,3,4,5,6,7,8中的17,11,9,8,7,6,8位数表示.
那么我到目前为止得到的公式是这样的:(log10(num)/ log10(base))+ 1.
在C/C++中,我使用这个公式来计算上面给出的结果.
long long int size = ((double)log10(num) / (double)log10(base)) + 1.0;
但遗憾的是,在某些情况下,公式并没有给出正确的答案,例如:
Number 8 in base 2 : 1,0,0,0
Number of digits: 4
Formula returned: 3
Number 64 in base 2 : 1,0,0,0,0,0,0
Number of digits: 7
Formula returned: 6
Number 64 in base 4 : 1,0,0,0
Number of digits: 4
Formula returned: 3
Number 125 in base 5 : 1,0,0,0
Number of digits: 4
Formula returned: 3
Number 128 in base 2 : …
Run Code Online (Sandbox Code Playgroud) 嗯,这是语言不可知的,我更喜欢用C#或F#来做,但是这次我更感兴趣的是"无论如何这样做".
我想要完成的是:
a)我想学习它 - 这次是关于我的自我,这是一个有趣的项目,我想向自己展示我对这个东西非常擅长
b)我对EBNF知之甚少(虽然我还不知道,运算符优先级如何在EBNF中起作用 - Irony.NET做得对,我查看了这些例子,但这对我来说有点不祥)
c)我的解析器应该能够这样:5*(3 +(2 - 9*(5/7))+ 9)例如,给我正确的结果
d)坦率地说,这似乎是为我编写编译器甚至是解释器的最大问题.我甚至可以生成64位汇编代码(我可以手动编写汇编程序),但公式解析器...
e)另一种想法:即使是简单的计算机(比如我的旧款Sharp 1246S只有大约2kB的RAM)也能做到这一点......它不会那么难,对吧?甚至非常非常古老的编程语言都有公式评估... BASIC是从1964年开始的,他们已经可以计算出我所提出的公式类型作为例子
f)一些想法,一些灵感就足够了 - 我根本不知道如何做运算符优先级和括号 - 但是,我知道它涉及AST并且许多人使用堆栈
所以你怎么看?
language-agnostic compiler-construction parsing interpreter formula
在统计编程语言R中,使用以下公式(在lm()或glm()中使用)
z ~ (x+y)^2
Run Code Online (Sandbox Code Playgroud)
相当于
z ~ x + y + x:y
Run Code Online (Sandbox Code Playgroud)
假设,我只有连续的预测因子,有一种简明的方法可以获得
z ~ I(x^2) + I(y^2) + I(x) + I(y) + I(x*y)
Run Code Online (Sandbox Code Playgroud)
为因子预测器做正确事情的公式是一个优点.
一种可能的解决方案是
z ~ (poly(x,2) + poly(y,2))^2
Run Code Online (Sandbox Code Playgroud)
我正在寻找更优雅的东西.
创建数组(一个名为Init_StringVar_Array_RulesBroken的公式):
//@Init
//This goes into the report header
WhilePrintingRecords;
//initializes the array of broken rules which we'll add to during details
StringVar Array RulesBroken;
"";
Run Code Online (Sandbox Code Playgroud)
前三个规则评估的示例,用于递增数组和添加值(这在名为Increment_StringVar_Array_RulesBroken的公式中):
//@Increment
//Goes before the details section is displayed
//accesses the shared variable
WhilePrintingRecords;
StringVar Array RulesBroken;
//separate if statement for each assert statement
//01
if not {@Assert_01_IfCrewIsConstructionCrew_CBFlagShouldBeYesOrDirect} then
Redim Preserve RulesBroken[UBound(RulesBroken) + 1]; //extends the array to …
Run Code Online (Sandbox Code Playgroud) arrays if-statement formula crystal-reports crystal-reports-2008
我有一个数据框和存储在变量中的公式:
> d <- data.frame(cls=1, foo=2, bar=3)
> f <- formula(cls ~ .)
Run Code Online (Sandbox Code Playgroud)
我想以编程方式从该公式的RHS中删除一个变量(在我的代码中,此变量的名称将作为字符串传递到某处).我试过用update.formula
:
> update(f, .~.-foo)
Error in terms.formula(tmp, simplify = TRUE) :
'.' in formula and no 'data' argument
Run Code Online (Sandbox Code Playgroud)
然后我试着提供这个data
论点:
> update(f, .~.-foo, data=d)
Error in terms.formula(tmp, simplify = TRUE) :
'.' in formula and no 'data' argument
Run Code Online (Sandbox Code Playgroud)
我知道如果初始公式在右侧没有点,上述情况将起作用:
> f <- formula(cls ~ foo + bar)
> update(f, .~.-foo)
cls ~ bar
Run Code Online (Sandbox Code Playgroud)
如果我无法确保RHS不包含点,如何从公式的RHS中删除变量?
我希望获得与特定日期,一周中的一周和一个月相关的年份.我有可能从这种模式中获得多年.假设日期是15,月份是8月,星期几是星期二那么,我怎样才能找到有效的年份?有这个公式吗?
我在Cell C13中有一个星期编号,在Cell C14中有一年.
我使用以下公式将其转换为该周数的星期四:
=DATE(C14,1,-6)-WEEKDAY(DATE(C14,1,3))+C13*7
Run Code Online (Sandbox Code Playgroud)
我怎么能用VBA做同样的事情?
听起来很简单,我只想知道如何使用Alexa统计数据计算网站的PageViews.Alexa提供百万分之一的PageViews并达到互联网用户总数的百分比等.我只想要一个使用Alexa数据来计算它的公式.我知道,Alexa的数据不准确,但我的问题将由此解决.
提前致谢.
我想知道每次单元格得到的值是否由公式改变时如何运行VBA代码?我设法在一个单元格被用户更改其值时运行代码,但它不起作用
我正在尝试建立一个模型验证工具,我正在遵循前向选择方法,所以如果我们假设我的模型是
model <- y ~ a * b + c * d + e
Run Code Online (Sandbox Code Playgroud)
我可以使用这个terms
功能
attributes(terms(model))$term.labels
Run Code Online (Sandbox Code Playgroud)
找出我模型中的所有预测变量,但这种方法的问题是交互项总是放在结果的末尾.我想a:b
是后a
和b
,而不是在最后,和同样为c:d
.有没有办法保持订单与交互条款?