免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9437 | 回复: 12
打印 上一主题 下一主题

[C++] 麻烦大家了,新人请教,怎样将下面的python代码转换成C++ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-03-04 11:45 |只看该作者 |倒序浏览
def move(dy, dx, beliefs, blurring):
    height = len(beliefs)
    width = len(beliefs[0])
    new_G = [[0.0 for i in range(width)] for j in range(height)]
    for i, row in enumerate(beliefs):
        for j, cell in enumerate(row):
            new_i = (i + dy ) % width
            new_j = (j + dx ) % height
            # pdb.set_trace()
            new_G[int(new_i)][int(new_j)] = cell
    return blur(new_G, blurring)

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
2 [报告]
发表于 2018-03-04 12:44 |只看该作者
人生苦短,lz还是赶紧去用Python吧,我们就不耽误lz了。

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:4415-16赛季CBA联赛之北京
日期:2018-03-04 17:01:50
3 [报告]
发表于 2018-03-04 16:54 |只看该作者
转换成C
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct {
  4.     unsigned height;
  5.     unsigned width;
  6.     double *data;
  7. } BeLief;

  8. /* .. */
  9. typedef int TBlurFunc;
  10. typedef int TBlurring;

  11. TBlurFunc blur(BeLief, TBlurring);
  12. TBlurFunc move(double dx, double dy, BeLief beliefs, TBlurring blurring);

  13. int main() {}

  14. TBlurFunc blur(BeLief b, TBlurring t) {
  15.     /* ... */
  16.     return 123;
  17. }

  18. TBlurFunc move(double dx, double dy, BeLief beliefs, TBlurring blurring) {
  19.     unsigned height = beliefs.height;
  20.     unsigned width = beliefs.width;
  21.     double *data = calloc(height * width, sizeof(double));
  22.     BeLief newG = {height, width, data};

  23.     double(*newg)[width] = (double(*)[width])data;
  24.     double(*cell)[width] = (double(*)[width])beliefs.data;

  25.     for (int i = 0; i < height; i++) {
  26.         for (int j = 0; j < width; j++) {
  27.             unsigned newi = ((unsigned)(i + dy)) % width;
  28.             unsigned newj = ((unsigned)(j + dx)) % height;
  29.             newg[newi][newj] = cell[i][j];
  30.         }
  31.     }

  32.     return blur(newG, blurring);
  33. }
复制代码

论坛徽章:
0
4 [报告]
发表于 2018-03-06 06:39 |只看该作者
回复 3#dorodaloo 谢谢您的回复,我能向您具体请教一下如何将PYTHON中的 enumerate(beliefs)命令转化为C++代码的吗。


论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:4415-16赛季CBA联赛之北京
日期:2018-03-04 17:01:50
5 [报告]
发表于 2018-03-06 13:50 |只看该作者
回复 4# 晓晖映月

化为C
3楼 33



论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2018-03-08 17:30 |只看该作者
完全两种东西,这么转,你照你的思想转,他照他的想法转,别人转了之后你能用吗?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
7 [报告]
发表于 2018-03-11 12:02 |只看该作者
本帖最后由 jason680 于 2018-03-11 12:35 编辑

回复 6# cjaizss

$ echo '++++++++++[>++++++++++[>+<-]<-]>>-.+++++++.---------.++++++++.>>++++[<++++[<+>-]>-]<<+.-------..' | perl -pe '{s/(([-+])\2+)/sprintf("%s%d",$2,length($1))/ge}'
+10[>+10[>+<-]<-]>>-.+7.-9.+8.>>+4[<+4[<+>-]>-]<<+.-7..

$ echo '++++++++++[>++++++++++[>+<-]<-]>>-.+++++++.---------.++++++++.>>++++[<++++[<+>-]>-]<<+.-------..' | perl -pe '{s/(([-+])\2+)/sprintf("%s%d",$2,length($1))/ge}' | perl -pe '{s/([-+])(\d+)/$1 x $2/ge}'
++++++++++[>++++++++++[>+<-]<-]>>-.+++++++.---------.++++++++.>>++++[<++++[<+>-]>-]<<+.-------..

$ echo '++++++++++[>++++++++++[>+<-]<-]>>-.+++++++.---------.++++++++.>>++++[<++++[<+>-]>-]<<+.-------..' | awk -vDBG=0 -f bf.awk
cjaizss

$ echo '++++++++++[>++++++++++[>+<-]<-]>>-.+++++++.---------.++++++++.>>++++[<++++[<+>-]>-]<<+.-------..' | awk -vDBG=0 -f bf.awk | awk 'BEGIN{FS="";for(n=1;n<=255;n+=1)chr[sprintf("%c",n)]=n}{for(n=1;n<=NF;n+=1)printf("%s(%d) ",$n,chr[$n])}'
c(99) j(106) a(97) i(105) z(122) s(115) s(115)

$ echo '++++++++++[>++++++++++[>+<-]<-]>>-.+++++++.---------.++++++++.>>++++[<++++[<+>-]>-]<<+.-------..' | perl -pe '{s/(([-+])\2+)/sprintf("%s%d",$2,length($1))/ge}'
+10[>+10[>+<-]<-]>>-.+7.-9.+8.>>+4[<+4[<+>-]>-]<<+.-7..

10*10 -1 = 99
99 +7 = 106
106 - 9 = 97
97 + 8 = 105
105 + 4*4 +1 = 122
122 -7 = 115

$ echo "+11[>+9[>+<-]<-]>>.+7.-9.+8.+17.-7.." | perl -pe '{s/([-+])(\d+)/$1 x $2/ge}'
+++++++++++[>+++++++++[>+<-]<-]>>.+++++++.---------.++++++++.+++++++++++++++++.-------..

$ echo "+11[>+9[>+<-]<-]>>.+7.-9.+8.+17.-7.." | perl -pe '{s/([-+])(\d+)/$1 x $2/ge}' | awk -f bf.awk
cjaizss

$ cat bf.awk

BEGIN{
  FS="";
  p=0;
  if(DBG){
    for(n=1;n<=80;n+=1){
      printf("%d",n%10);
    }
    print"";
  }
}
func bf(){
  if($n=="+"){
    ++a[p];
    if(DBG&&$n!=$(n+1)){
      printf "["p"]="a[p]", "
      c="\n";
    }
  }
  if($n=="-"){
    --a[p];
    if(DBG&&$n!=$(n+1)){
      printf "["p"]="a[p]", "
      c="\n";
    }
  }
  if($n==">"){
    ++p;
  }
  if($n=="<"){
    --p;
  }
  if($n=="."){
    printf("%s%c",c,a[p]);
    c="";
    if(DBG)P=sprintf("%s%c",P,a[p])
  }
  if( $n == "[" ) {      # while (*ptr)
    ++w;
    as[w]=n;
    if(DBG){
      printf("w=%d(n=%d)*p=%d, ",w,n,a[p])
    }
    if(a[p]==0){
      n=ae[w]
      w--;
    }
  }
  if($n == "]") {         #
    ae[w]=n;
    n=as[w];
    if(DBG){
      printf("w=%d(e=%d)*p=%d, ",w,ae[w],a[p])
    }
    if(a[p]==0){
      n=ae[w]
      w--
    }
  }
  if(++cnt>1000)exit;
}

{
  if(DBG)print;
  for(n=1;n<=NF;n+=1){
    bf();
  }
}
END{
  if(DBG)printf "\n"P;
  print""
}

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
8 [报告]
发表于 2018-03-11 20:54 |只看该作者
jason680 发表于 2018-03-11 12:02
回复 6# cjaizss

$ echo '++++++++++[>++++++++++[>+-.+++++++.---------.++++++++.>>++++[-]+++++++++ ...

虽然我不知道你写的是什么东西,但是我觉得你写得很好。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
9 [报告]
发表于 2018-03-11 22:08 |只看该作者
本帖最后由 jason680 于 2018-03-11 22:13 编辑

回复 8# fender0107401

https://baike.baidu.com/item/Brainfuck
   XXX 是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于XXXX在英语中是脏话,这种语言有时被称为brainf*ck或brainf**k,甚至被简称为BF。
...


$ echo "fender0107401" | awk 'BEGIN{FS="";for(n=1;n<=255;n+=1)chr[sprintf("%c",n)]=n}{for(n=1;n<=NF;n+=1)printf("%s(%d) ",$n,chr[$n])}'
f(102) e(101) n(110) d(100) e(101) r(114) 0(48) 1(49) 0(48) 7(55) 4(52) 0(48) 1(49)

$ echo "+10[>+10[>+<-]<-]>>++.-.+9.-10.+.+13.>>+6[-<+11[-<->]>]<<.+.-.+7.-3.-4.+." | perl -pe '{s/([-+])(\d+)/$1 x $2/ge}' | awk -f bf.awk
fender0107401

$ echo "+10[>+10[>+<-]<-]>>++.-.+9.-10.+.+13.>>+6[-<+11[-<->]>]<<.+.-.+7.-3.-4.+." | perl -pe '{s/([-+])(\d+)/$1 x $2/ge}'
++++++++++[>++++++++++[>+<-]<-]>>++.-.+++++++++.----------.+.+++++++++++++.>>++++++[-<+++++++++++[-<->]>]<<.+.-.+++++++.---.----.+.

$ echo "++++++++++[>++++++++++[>+<-]<-]>>++.-.+++++++++.----------.+.+++++++++++++.>>++++++[-<+++++++++++[-<->]>]<<.+.-.+++++++.---.----.+." | awk -f bf.awk
fender0107401



f(102) e(101) n(110) d(100) e(101) r(114) 0(48) 1(49) 0(48) 7(55) 4(52) 0(48) 1(49)
10 * 10 +2 = 102
102 - 1 = 101
101 +9 =110
...

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
10 [报告]
发表于 2018-03-12 21:06 |只看该作者
jason680 发表于 2018-03-11 22:08
回复 8# fender0107401

https://baike.baidu.com/item/Brainfuck

.---. .---- ---.- ---..


.--.. ....-- -...- ...--

上面是我用某种特殊编码写的一段什么什么,哈哈哈哈哈。





您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP