小编whd*_*whd的帖子

Prolog dcg 从语言中生成所有单词

我正在尝试在 prolog 中编写一些 dcg 语法,它将描述
a^nb^n n>=0
"",ab,aabb,aaabbb itd

我写的都是

s --> slowo.
slowo --> [a],slowo,[b],!.
slowo --> [].  
Run Code Online (Sandbox Code Playgroud)

只要我想做的只是检查单词是否正确,它就很好,但是 dcg 语法应该如何在 prolog 中查找,以便?-phrase(s,X)从我的语言中生成所有单词?

prolog left-recursion dcg

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

Foldr比较空列表

我正在尝试编写函数,我不知道为什么我不能这样做

ssm'  = foldr (\x acc -> if acc == [] then [x]++acc else if (x > (maximum acc)) then [x]++acc else acc) [] 
Run Code Online (Sandbox Code Playgroud)

请给我一个线索.

haskell fold

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

列表范围的类型:如何使我的函数更少多态?

我有一个功能

sasiad (x,y) = [ (x+dx,y+dy) | dy <- [-1..1], dx <- [-1..1], x+dx >= 0, y+dy >= 0]
Run Code Online (Sandbox Code Playgroud)

我不喜欢那种功能的类型.我希望它返回[(Int,Int)]而不是[(t,t1)] 强制ghci可以做到吗?

polymorphism haskell typing ghci

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

重新定位位置更新

我正在尝试编写一个应用程序,它将更新有关当前电话位置的信息,因此我从开发人员Android培训中获取了代码. http://developer.android.com/training/location/receive-location-updates.html

有一条线

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest, this);
Run Code Online (Sandbox Code Playgroud)

但我在这条线上说错了

Error:(159, 42) java: no suitable method found for requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient,com.google.android.gms.location.LocationRequest,com.example.gpsWakeUpper.MyActivity)
method com.google.android.gms.location.FusedLocationProviderApi.requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient,com.google.android.gms.location.LocationRequest,com.google.android.gms.location.LocationListener) is not applicable
  (argument mismatch; com.example.gpsWakeUpper.MyActivity cannot be converted to com.google.android.gms.location.LocationListener)
method com.google.android.gms.location.FusedLocationProviderApi.requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient,com.google.android.gms.location.LocationRequest,android.app.PendingIntent) is not applicable
  (argument mismatch; com.example.gpsWakeUpper.MyActivity cannot be converted to android.app.PendingIntent)
Run Code Online (Sandbox Code Playgroud)

我的类实现了这样的接口

public class MyActivity extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, GoogleMap.OnMapClickListener, android.location.LocationListener
Run Code Online (Sandbox Code Playgroud)

如何更改代码以便它开始工作?我想知道为什么Android站点的代码不起作用.

android

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

2dm矩阵中的邻居表示为列表列表

好吧,我无法弄清楚如何在haskell中制作它.例如,我有这样的矩阵

[[1,2],[3,4]]
Run Code Online (Sandbox Code Playgroud)

我想生成一个列表列表,其中包含该矩阵的每个元素的所有可能的邻居.

预期结果是:

[[1,2],[1,3],[1,4],[2,1],[2,3],[2,4],[3,1],[3,2],[3,4],[4,1],[4,2],[4,3]]
Run Code Online (Sandbox Code Playgroud)

我知道如何使用每个单元格的邻居的绳索创建列表列表的功能:

pos how = [ (0+dx,0+dy) | dx <- [0..(how-2)], dy <- [0..how-1] ] :: [(Int,Int)]
neighbour (x,y) how = [ (x+dx,y+dy) | dy <- [-1..1], dx <- [-1..1],
                                      x+dx >= 0, y+dy >= 0, x+dx<=how-2, y+dy <= how-1,
                                      (x,y)/=(x+dx,y+dy) ] :: [(Int,Int)]
all_n how = [ p | x <- pos how, let p = neighbour x how ] :: [[(Int,Int)]]
Run Code Online (Sandbox Code Playgroud)

但我不能像我描述的那样改变它.

haskell

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

使用按位运算从基数10转换为基数2

在标题中我试图将十进制数转换为二进制数.我设置了最低的int作为我coudl

char * toBinary(int num)
{

    int i = 1 << 31;
    while(i!=0)
    {
        if((num & i) == 0 )
            printf("0");
        else
            printf("1");
        i >>= 1;
        printf("%d", i);
        getchar();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是它不起作用,每次换班后i仍然是负数,我改变了什么?

c

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

从线程中改变ui

我知道有类似的问题,但我的问题略有不同,我有这样的代码

 Thread t = new Thread(){
        public void run(){
            while(!running) {
                if(gpstracker.canGetLocation()) {
                    double lon = gpstracker.getLongitude();
                    double lat = gpstracker.getLatitude();
                    now = new LatLng(lat,lon);
                    if(change(now)==1)
                        running = true;
                    else
                        ;
                }
                else {
                    gpstracker.showSettingsAlert();
                }
            }
        }
    };
Run Code Online (Sandbox Code Playgroud)

change(now)我是changin ui所以我的问题是如何从我的线程中更改UI?我已经阅读了关于处理程序od异步任务,但我不认为他们在这种情况下是好的,或者我可能不知道如何使用它们,任何建议?

android

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

MailSender春天

我正在尝试运行简单的mailsender服务:

@Service
public class MailService {

    @Autowired
    private MailSender mailSender;

    @Autowired
    private SimpleMailMessage templateMessage;

    @Autowired
    private AuthenticationService authenticationService;

    public void sendMessage(SaveSurveyDTO saveSurvey) {

        title += "title2";
        templateMessage.setSubject(title);
        // templateMessage.setTo(email.toString());
        templateMessage.setTo("my@mail.com");
        mailSender.send(templateMessage);
    }

}


@Configuration
public class MailConfig {

    @Bean
    public JavaMailSenderImpl mailSender() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        Properties props = new Properties();
        props.put("mail.smtp.auth", true);
        props.put("mail.debug", "true");
        props.put("mail.smtp.host", "adres");
        props.put("mail.smtp.port", "25");
        props.put("mail.smtp.auth.mechanisms", "NTLM");
        props.put("mail.smtp.auth.ntlm.domain", "DOMAIN");
        sender.setHost("host");
        sender.setPort(25);
        sender.setJavaMailProperties(props);
        sender.setUsername("username");
        sender.setPassword("pass");
        return sender;

    }
}
Run Code Online (Sandbox Code Playgroud)

当我试图运行它时,我收到以下错误:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-boot

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

生成依赖于2个列表的数字

这是一些显示我的问题的简单代码:

 void method()
 {
   for(int i = 0;i<=99)
   {
     method1();
     method2();
   }
  }

void method1()
{
    if(Randombool())
    {
        bool exists = true;
        int n;
        while(exists)
        {
            n=RandNum(100);
            exists = list1.Exists(num => num == n);
        }
        list1.add(n);
    }
}

void method2()
{
    int n;
    bool exists = true;
    bool exists2 = true;
    while(!(exists && !exists2))
    {
        n = RandNum(100);
        exists = list1.Exists(elem => elem == n);
        exists2 = list2.Exists(elem => elem == n);
    }
    list2.add(n)
}
Run Code Online (Sandbox Code Playgroud)

好吧很明显它会while长时间停留在方法2的循环中.

有没有更温和的方法来生成数字,所以我可以避免等待?

c#

-1
推荐指数
1
解决办法
78
查看次数

标签 统计

haskell ×3

android ×2

c ×1

c# ×1

dcg ×1

fold ×1

ghci ×1

java ×1

left-recursion ×1

polymorphism ×1

prolog ×1

spring ×1

spring-boot ×1

spring-mvc ×1

typing ×1