Latar Belakang
Saya saat ini berada dalam kelas AP Comp Sci A: Java, dan saya ingin memulai beberapa teman saya dengan bermain golf kode. Saya mendapat tantangan dari kursus, dan saya ingin melihat berapa byte yang dapat dilakukan oleh komunitas ini.
Detail tantangan:
Diberikan dua string input, string utama dan string pivot, lakukan hal berikut:
Jika string pivot tepat sekali sebagai substring dari string utama, bagian dari string utama yang datang sebelum string pivot akan ditukar dengan bagian yang datang setelahnya, sambil menjaga urutan dalam substring yang sedang ditukar .
Sebagai contoh:
Jika string pivot kosong atau string pivot tidak ditemukan dalam string utama, program tidak harus memiliki perilaku yang ditentukan.
Jika ada lebih dari satu instance dari string pivot, perpecahan harus terjadi pada yang pertama dan hanya instance pertama dari pivot.
Contoh: Diberikan string utama OneTwoThreeTwoOne
dan string pivot Two
, output seharusnya ThreeTwoOneTwoOne
.
Mengingat string 1Two2Two3Two4
dan pivot utama Two
, output harus 2Two3Two4Two1
.
Mengingat string utama OneTwoThree
dan string pivot "Dua", output seharusnya ThreeTwoOne
. Diberikan string utama the rabbit is faster than the turtle
dan string pivot
is faster than
(perhatikan spasi tunggal sebelum dan sesudahnya), hasilnya harus the turtle is faster than the rabbit
.
Mengingat string utama 1-2-3-4-5-6
dan pivot -
, output seharusnya 2-3-4-5-6-1
.
Kata penutup:
Ini adalah pertanyaan pertama saya tentang golf kode, jadi jika Anda memiliki saran atau kritik yang membangun, maka jangan ragu untuk mengatakannya.
Selain itu, kode saya untuk proyek ini (ditulis dalam bahasa Jawa karena kursus berfokus pada itu) dapat ditemukan di bawah. Jika Anda memiliki tips, saya ingin sekali melihatnya. Saat ini 363 byte, tapi saya yakin kalian bisa datang dengan solusi yang jauh lebih baik dan lebih kecil.
import java.util.Scanner;interface Main{static<T>void D(T f){System.out.println(f);}static void main(String[]A){Scanner s=new Scanner(System.in);D("Enter the first String:");String a=s.nextLine();D("Enter the pivot String:");String p=s.nextLine();if(p.isEmpty()|!a.contains(p)){D("Error: Pivot String not found.");return;}String w[]=a.split(p,2);D(w[1]+p+w[0]);}}
Catatan: Teks untuk input dan untuk kasus bahwa string pivot tidak ditemukan adalah wajib untuk tugas asli, tetapi tidak untuk tantangan ini.
2-3-4-5-6-1
.
pivot='-'
danmain='1-2-3-4-5-6'
? Sebagian besar hasil kiriman2-3-4-5-6-1
untuk ini, tapi seperti yang saya mengerti tantangannya seharusnya2-1-3-4-5-6
.