Codegolf — Исправление Пакета Java

  • Автор темы Lvv77
  • Обновлено
  • 22, Oct 2024
  • #1

У меня много Java-проектов, и я часто создаю новые. У меня есть несколько вспомогательных классов (Vector, Logger и т. д.), и исправление первой строки в правильном пакете занимает много времени, мне действительно нужна небольшая программа, которая поможет мне исправить это автоматически.

Ваша программа сначала получит имя пакета, в который перемещены файлы (например, com.google.raycasting), после этого каждый файл с

 
 ****Vector.java****
package com.loovjo.tetris;
class Vector {

public Vector (int x, int y) {

System.out.println(x + ", " + y);

}
}
****Logger.java****
package com.loovjo.tetris;
class Vector {

public Vector (int x, int y) {

System.out.println(x + ", " + y);

}
}
 
between them. You read the input however you want (STDIN, program arguments, file, etc.).

Когда достигается EOF, программа должна выводить каждый файл так же, как и на входе, но с измененным объявлением пакета.

Пример:

Вход:

com.loovjo.tetris ****Vector.java**** package com.loovjo.someoldproject; class Vector { public Vector (int x, int y) { System.out.println(x + ", " + y); } } ****Logger.java**** package com.loovjo.someoldproject; class Logger { public String name; public Logger(String name) { this.name = name; } }

(Конечно, это не настоящие файлы.)

Выход:

****<FILENAME>****

Дополнительная спецификация ввода/вывода:

  • Объявление пакета не всегда будет находиться в первой строке, входные данные могут содержать перед ним некоторые символы новой строки/пробелы. В этом случае эти символы должны присутствовать в выводе.
  • Файлы на входе всегда будут иметь правильный синтаксис.

Помните, это Код Гольф, поэтому побеждает самый короткий код!

#код-гольф #java

Lvv77


Рег
19 Jan, 2006

Тем
81

Постов
211

Баллов
646
  • 26, Oct 2024
  • #2

Математика, 106 байт

 
 
 
 package/*;*/stuff 

Работает путем разделения строки на строки и возврата всех строк, кроме первой, с заменой всех объявлений пакета новым пакетом.

 

Zoey4f2a


Рег
27 Aug, 2012

Тем
73

Постов
204

Баллов
619
  • 26, Oct 2024
  • #3

Ява, 286 байт

****Foo.java**** package com.loovjo.tetris; ****Bar.java**** package com.loovjo.tetris; "package aaa;" // package bbbb; /** * package cccc; */ ****Baz.java**** //comment: package com.loovjo.tetris;

Возьмите данные из STDIN. Тестовый пример:

com.loovjo.tetris ****Foo.java**** package something; ****Bar.java**** package something.something ; "package aaa;" // package bbbb; /** * package cccc; */ ****Baz.java**** //comment: package dddd;

Выход:

import java.util.*;class P{public static final void main(String[]a){Scanner s=new Scanner(System.in);for(String p="package "+s.nextLine(),e;(e=s.findWithinHorizon("(package[^;]+)|\"([^\"]|\\\\.)*\"|//.*|/\\*([^*]|\\*[^/])*|.|\n",0))!=null;System.out.print(s.match().start(1)>=0?p:e));}}

Не могу работать с такими вещами, как StringReplace[Rest@#~StringRiffle~"\n","package "~~__~~";"->"package "<>#[[1]]<>";"]&@StringSplit[#,"\n"]& , because regex.

 

Andi71


Рег
16 Jun, 2012

Тем
82

Постов
184

Баллов
604
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно