草庐IT

java - 在 IntelliJ 中使用 CHelper 插件进行编码竞赛

coder 2024-03-12 原文

我最近发现了一个编码网站,有编码竞赛:CodinGame ,为了解决问题,我们只需要将它们交给一个带有main的文件(在下面的示例中,类Player),如果需要其他类,我们将它们包含在这个文件。

为了这个目的(并且看到正在为 another coding site 工作),我已经下载了 intelliJ 和 plugin CHelper为了将所有源文件放入一个java文件中(这应该是CHelper插件的目的)。问题是:我不明白如何为我的编码站点使用/设置此插件。我知道它应该可以工作,因为该站点的另一个用户已经为此目的使用了该插件。

我想要什么

关于我想要的更详细的示例,这里是带有 main 的类:

// Class Player in file Player.java
public class Player {
    public static void main(String[] args) {
        System.out.println(new Cell(1,2).toString());
    }
}

而这个类 Cell 在另一个 java 文件中:

// Class Cell in file Cell.java
public class Cell {
    int x,y;
    public Cell(int x, int y) {
        this.x = x;
        this.y = y;
    }
    public String toString() {
        return "["+x+","+y+"]";
    }
}

而且我希望插件合并两个(或更多)java 文件以便拥有这个:

// Generated : 2 files merged into one file: Player.java
public class Player {
    public static void main(String[] args) {
        System.out.println(new Cell(1,2).toString());
    }

    // Class Cell merged in this file
    public class Cell {
        int x,y;
        public Cell(int x, int y) {
            this.x = x;
            this.y = y;
        }
        public String toString() {
            return "["+x+","+y+"]";
        }
    }
}

我取得了什么

我正确安装了 IntelliJ,并下载了 CHelper 插件。 我安装了链接到 TopCoder 的工具栏菜单按钮(该插件专门用于该站点),但是 Launch TopCoder 按钮抛出 RuntimeException:无法运行程序 .../javaws 没有这样的文件。 通过从 TopCoder 下载一些任务,我成功地将 2 个文件合并为一个:TaskA.java 到 Main.java(下载了模板)

什么是理想的

如果 Eclipse 插件可以像我想要的那样工作,我会很高兴知道它。事实上,这正是我在搜索之初所寻找的,我只找到了一些适用于 IntelliJ IDE 的插件。

最佳答案

所以我终于找到了一种方法来做我想做的事:做这件事的人分享了我一个 link to the help我需要。

我准备专门总结一下CodinGame在这里。

I- 工具栏按钮

添加到菜单工具栏的重要按钮是

  • 创建新任务
  • 修改任务
  • 删除任务
  • 编辑项目设置

现在,我们在红色矩形中有一些按钮:

II- 编辑设置

然后我们必须编辑项目设置:

  • 将默认目录设置为默认包
  • 输出目录是生成的源文件

III-创建任务

接下来,我们必须创建一个新任务(绿色“+”按钮)并使用 advanced 选项对其进行设置。我们使用按钮 Edit tests 添加测试输入和已知输出。我们说我们希望生成的文件被称为 Solution.java,我们要编写的类将被称为 CGXFormatter.java

我们现在有两个文件出现在我们的包 .../puzzle 中:

  • CGXFormatter.java 带有方法 solve,这是我们要读取输入并在输出中给出答案的地方
  • CGXFormatter.task,包含测试用例等信息,以便插件生成源文件

IV- 写下你的解决方案

例如,我们只是要在我们的 CGXFormatter 类中打印“This is the result”(但我们可以创建另一个类文件并调用它,它可以通过复制定义来工作生成的解决方案类中的类)。像这样:

package com......puzzle;

import java.util.Scanner;
import java.io.PrintWriter;

public class CGXFormatter {
    public void solve(int testNumber, Scanner in, PrintWriter out) {
        out.println("This is the result");
    }
}

V-生成解决方案

最后一步:点击运行。然后我们创建了目录 generated,在其中,我们有新生成的 Solution.java 文件。我们可以读到这个:

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author XXX
 */
public class Solution {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        CGXFormatter solver = new CGXFormatter();
        try {
            int testNumber = 1;
            while (true)
                solver.solve(testNumber++, in, out);
        } catch (UnknownError e) {
            out.close();
        }
    }

    static class CGXFormatter {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            out.println("This is the result");
        }

    }
}

VI- 最后一步

好吧,还有一个小问题:在CodinGame中,解决方案类前面不应该有public,所以只用class Solution代替public class Solution,你就完成了。 如果你愿意,你也可以把它放在一个脚本中,通过 multirun 自动完成(也可以在 IDEA 中安装插件)。

就是这样,你已经完成了。

VII- 编辑 2019 年 10 月

如果插件提示找不到 net.egork.... 类,您可以添加我找到的这些步骤 here

Update Intellij IDEA to the latest version. Secondly, you go to File -> Settings... -> Plugins and search for the chelper plugin. It is required to run the task run configurations, and it supplies you with the buttons on the toolbar, too. After you have done that, you should be getting the error about impossibility to find and load class from net.egork... Now you go to the jetbrains plugin site, search for chelper plugin there, and download the latest zip archive. After unzipping it, go to File -> Project Structure... -> Libraries -> + -> Java, select recursively the folder you just unzipped until you get to a bunch of jars that contain that missing class in the error. After you have added those jars to your classpath, along with JDK, it should be enough


作为旁注,我注意到 out.println 没有按我的预期工作(我不知道为什么),所以我将其替换为System.out.println 而不是在 solve 方法中使用建议的 out 对象。

关于java - 在 IntelliJ 中使用 CHelper 插件进行编码竞赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38492050/

有关java - 在 IntelliJ 中使用 CHelper 插件进行编码竞赛的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  9. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  10. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

随机推荐