pengantar
Saya penggemar berat SBU (Short But Unique) tantangan yang muncul di PPCG sepanjang waktu. CUSRS adalah sistem yang dirancang untuk refactor string, fungsi CUSRS mengambil 2 parameter dan menghasilkan 1 String.
Tantangan
Menghasilkan program, fungsi, lambda atau alternatif yang dapat diterima untuk melakukan hal berikut:
Diberikan String inputdan String refactor(sebagai contoh), refactor inputmenggunakan refactorsebagai berikut:
The refactorString akan di format ((\+|\-)\w* *)+(regex), misalnya:
+Code -Golf -lf +al
Setiap bagian adalah tindakan refactoring untuk dilakukan input. Setiap program juga memiliki pointer.
+ Akan memasukkan akhiran itu (tanpa nilai tambah) di lokasi pointer saat ini di String dan kemudian mengatur ulang pointer ke 0.
Setiap operasi harus diterapkan ke inputString dan hasilnya harus dikembalikan.
Contoh:
input:
Golf +Code //pointer location: 0
output:
CodeGolf //pointer location: 0
-Akan menambah pointer melalui String sampai menemukan akhiran. Akhiran akan dihapus dari String dan pointer akan dibiarkan di sebelah kiri teks yang dihapus. Jika tidak ada suffix yang ditemukan, pointer hanya akan maju ke akhir String dan dibiarkan di sana.
input:
Golf -lf //pointer location 0
output:
Go //pointer location 2
Contohnya
input:
"Simple" "-impl +nip -e +er"
output:
"Sniper"
input:
"Function" "-F +Conj"
output:
"Conjunction"
input:
"Goal" "+Code -al +lf"
output:
"CodeGolf"
input:
"Chocolate" "Chocolate"
output:
"Chocolate" //Nothing happens...
input:
"Hello" "-lo+p +Please" //Spaces are irrelevant
output:
"PleaseHelp"
input:
"Mississippi" "-s-s-i-ppi+ng" //Operations can be in any order
output:
"Missing"
input:
"abcb" "-c -b +d"
output:
"abd"
input:
"1+1=2" "-1+22-=2+=23"
outut:
"22+1=23"
Kode Contoh
Contohnya adalah Java, itu tidak golf sama sekali.
public static String refactor(String input, String swap) {
int pointer = 0;
String[] commands = swap.replace(" ", "").split("(?=[-+])");
for (String s : commands) {
if (s.startsWith("+")) {
input = input.substring(0, pointer) + s.substring(1) + input.substring(pointer, input.length());
pointer = 0;
} else {
if (s.startsWith("-")) {
String remove = s.substring(1);
for (int i = pointer; i < input.length(); i++) {
if (input.substring(i, i + remove.length() > input.length() ? input.length() : i + remove.length()).equals(remove)) {
pointer = i;
input = input.substring(0, i) + input.substring(i + remove.length(), input.length());
break;
}
}
}
}
}
return input;
}
Aturan
- Celah Standar Berlaku
- Kode terpendek, dalam byte, menang
aaa -a?
|aadengan pipa menjadi pointer.
-jika sufiks tidak ditemukan?