小编Ram*_*rar的帖子

Linux shell排序文件根据第二列?

我有这样一个文件:

FirstName, FamilyName, Address, PhoneNumber
Run Code Online (Sandbox Code Playgroud)

我如何按FamilyName对其进行排序?

linux shell

81
推荐指数
3
解决办法
11万
查看次数

如何使用PyPdf在pdf文件中逐行阅读?

我有一些代码可以从pdf文件中读取.有没有办法在Windows上使用Pypdf,Python 2.6在pdf文件(而不是页面)中逐行读取?

以下是阅读pdf页面的代码:

import pyPdf

def getPDFContent(path):
    content = ""
    num_pages = 10
    p = file(path, "rb")
    pdf = pyPdf.PdfFileReader(p)
    for i in range(0, num_pages):
        content += pdf.getPage(i).extractText() + "\n"
    content = " ".join(content.replace(u"\xa0", " ").strip().split())
    return content
Run Code Online (Sandbox Code Playgroud)

更新:

通话代码是这样的:

f= open('test.txt','w')
pdfl = getPDFContent("test.pdf").encode("ascii", "ignore")
f.write(pdfl)
f.close()
Run Code Online (Sandbox Code Playgroud)

python pdf pypdf

25
推荐指数
3
解决办法
6万
查看次数

如何更快地生成自恋数字?

"自恋数字"是n位数字,其数字的所有n次方的总和等于数字.

所以,这153是一个自恋的数字,因为1^3 + 5^3 + 3^3 = 153.

现在给定N,找到N个数字长度的所有自恋数字?

我的方法:迭代所有数字做数字的幂和

并检查是否有相同的数字,我计算了权力.

但这还不够好,有没有更快的方法?!

更新: 在自然界中只有88个自恋数字,最大的是39位数字,但我只需要长度为12或更短的数字.

我的代码:

long long int powers[11][12];
// powers[x][y] is x^y. and its already calculated

bool isNarcissistic(long long int x,int n){
    long long int r = x;
    long long int sum = 0;

    for(int i=0; i<n ; ++i){
        sum += powers[x%10][n];
        if(sum > r)
            return false;
        x /= 10;
    }
    return (sum == r);
}

void find(int n,vector<long long int> &vv){
    long long …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm

25
推荐指数
3
解决办法
4904
查看次数

处理链表数组

我的方法:

每个元素的固定长度(假设为20)数组是指向链表的第一个节点的指针.所以我有20个不同的链表.

这是结构:

struct node{
       char data[16];
       struct node *next;
};
Run Code Online (Sandbox Code Playgroud)

我对该数组的声明

struct node *nodesArr[20];
Run Code Online (Sandbox Code Playgroud)

现在要将一个新节点添加到链接列表之一,我这样做:

struct node *temp;

temp = nodesArr[i]; // i is declared and its less than 20
addNode(temp,word); // word is declared (char *word) and has a value ("hello")
Run Code Online (Sandbox Code Playgroud)

addNode函数:

void addNode(struct node *q, char *d){
    if(q == NULL)
        q = malloc(sizeof(struct node));
    else{
        while(q->next != NULL)
            q = q->next;

        q->next = malloc(sizeof(struct node));
        q = q->next;
    }

    q->data = d; // this must done using …
Run Code Online (Sandbox Code Playgroud)

c arrays linked-list

7
推荐指数
1
解决办法
3万
查看次数

C中的函数是否与Python中的raw_input相同?

是否有一个与raw_inputPython 相同的C函数?

#in Python::
x = raw_input("Message Here:")
Run Code Online (Sandbox Code Playgroud)

我怎么能在C中写出类似的东西?

更新::

我做了这个,但我得到一个错误::

#include<stdio.h>
#include<string.h>
#include "stdlib.h"

typedef char * string;

int raw_input(string msg);
string s;
string *d;

main(){
raw_input("Hello, Enter Your Name: ");
d = &s;
printf("Your Name Is: %s", s);

}

int raw_input(string msg){
string name;
printf("%s", msg);
scanf("%s", &name);
*d = name;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

并且错误是程序运行并打印msg,并通过scanf获取用户类型,但然后它挂起并退出.. ??

c python raw-input

4
推荐指数
1
解决办法
4886
查看次数

在字符串中搜索另一个字符串的字谜?

我正在尝试从字符串text中找到子字符串,该字符串是字符串的字谜pattern.

我的问题: 请问拉宾,卡普算法进行调整,以这个目的是什么?还是有更好的算法?

我尝试过一种蛮力算法,在我的情况下不起作用,因为文本和模式每个都可以达到一百万个字符.

更新:我听说有一种使用O(1)空间的最坏情况O(n 2)算法.有谁知道这个算法是什么?

更新2:作为参考,这里是Rabin-Karp算法的伪代码:

function RabinKarp(string s[1..n], string sub[1..m])
    hsub := hash(sub[1..m]);  hs := hash(s[1..m])
    for i from 1 to n-m+1
       if hs = hsub
          if s[i..i+m-1] = sub
              return i
       hs := hash(s[i+1..i+m])
    return not found
Run Code Online (Sandbox Code Playgroud)

这使用滚动散列函数来允许在O(1)中计算新散列,因此在最坏的情况下整体搜索是O(nm),但是在最好的情况下具有良好的散列函数是O(m + n) .few collisions在搜索字符串的字谜时会产生滚动哈希函数吗?

c++ string algorithm hash anagram

4
推荐指数
2
解决办法
2832
查看次数

如何使socket.listen(1)工作一段时间,然后继续其余的代码?

我正在制作一个服务器,它创建一个tcp套接字并在端口范围内工作,每个端口它将在该端口上监听一段时间,然后继续其余的代码.

像这样::

import socket

sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sck.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

msg =''
ports = [x for x in xrange(4000)]
while True:
    try:
        for i in ports:
            sck.bind(('',i))
            ## sck.listen(1)
            ## make it just for some time and then continue this

            ## if there a connection do this
                conn, addr = sck.accept()
                msg = conn.recv(2048)
                ## do something
            ##if no connection continue the for loop
            conn.close()
    except KeyboardInterrupt:
        exit()
Run Code Online (Sandbox Code Playgroud)

所以我怎么能让sck.listen(1)工作一段时间?

python sockets ports

3
推荐指数
1
解决办法
6495
查看次数

海克斯康计划中的最短路径?

在最新的IEEE Xtreme竞赛中,我试图解决的一个问题是,

输入两点p1(x1,y1),p2(x2,y2)你必须找到从p1到p2的最短路径长度,

例如,如果p1(1,1),p2(4,4)那么最短路径的长度为9个边缘,

在此输入图像描述

我做过像深度优先搜索这样的东西,如果两点之间的距离很小,那么效果很好,例如对于点(1,1)和(10,10)需要很长时间,

并且最大点的点数有限(12,12).

我的方法是将上面的图片转换为所有权重为1的无向图,然后找到最短路径.

这是我找到最短路径的函数:

int minCost;
vector<int> path;
multimap<int,int> Connections;
typedef multimap<int,int>::iterator mmit;

void shortestPath(int cs){
    if(cs > minCost)
        return;
    if(path.back() == Target){
        if(cs < minCost)
            minCost = cs;
        return;
    }

    pair<mmit,mmit> it = Connections.equal_range(path.back());
    mmit mit = it.first;

    for( ; mit != it.second ; ++mit){
        if(isVisited(mit->second))
            continue;
        markVisited(mit->second);
        path.push_back(mit->second);
        shortestPath(cs+1);
        markUnvisited(mit->second);
        path.pop_back();
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有比这更快的方法?我可以使用dijkstra这个无向图吗?

c++ algorithm shortest-path

3
推荐指数
1
解决办法
869
查看次数

Python优化

f = open('wl4.txt', 'w')
hh = 0
######################################
for n in range(1,5):
    for l in range(33,127):
        if n==1:
            b = chr(l) + '\n'
            f.write(b)
            hh += 1 
        elif n==2:           
            for s0 in range(33, 127):
                b = chr(l) + chr(s0) + '\n'
                f.write(b)
                hh += 1
        elif n==3:          
            for s0 in range(33, 127):
                for s1 in range(33, 127):
                    b = chr(l) + chr(s0) + chr(s1) + '\n'
                    f.write(b)
                    hh += 1 
        elif n==4:    
            for s0 in range(33, 127):
                for s1 in …
Run Code Online (Sandbox Code Playgroud)

python optimization

2
推荐指数
2
解决办法
1153
查看次数

这段代码,它的工作正常并返回我想要的东西,但它在打印之前挂起了吗?

我制作这个节目::

#include<stdio.h>

char *raw_input(char *msg);

main() {
char *s;
*s = *raw_input("Message Here Is: ");
printf("Return Done..");
printf(s);
}

char *raw_input(char *msg){
char *d;
    printf("%s", msg);
    scanf("%s",&d);
return d;
}
Run Code Online (Sandbox Code Playgroud)

这样做,它打印我的消息并扫描用户的输入,然后打印它,但是打印输出来自用户的问题是什么?

更新::

我需要raw_input函数.没有任何额外的呼叫就像这样

*s = *raw_input("Message Here");
Run Code Online (Sandbox Code Playgroud)

我不想用这个::

raw_input("Message Here Is: ", d);
....
Run Code Online (Sandbox Code Playgroud)

只想返回用户将输入的字符串.

UPDATE2 ::

来自jamesdlin回答(谢谢),现在我明白了我的问题是如何在这里返回一个分配的字符串:)

#include<stdio.h>
#define buffer 128

char *raw_input(char *msg);

main() {
char *s;
s = raw_input("Message Here Is: ");
printf("%s\n",s);
}

char *raw_input(char *msg){
char *d;
    printf("%s", msg);
    fflush(stdout);
    fgets(d, buffer, stdin); ## In …
Run Code Online (Sandbox Code Playgroud)

c printf pointers function

0
推荐指数
1
解决办法
282
查看次数