Module: AP COMPUTER SCIENCE SECTION II 2014


Problem

1/3

AP Computer Science A 2014 Free-Response Question - scrambleWord

Problem

1. این سوال شامل استدلال در مورد رشته های ساخته شده از حروف بزرگ است. شما دو روش مرتبط که در یک کلاس ظاهر می شوند (نشان داده نشده) را پیاده سازی خواهید کرد. روش اول یک پارامتر رشته را می گیرد و یک نسخه درهم از آن رشته را برمی گرداند. روش دوم فهرستی از رشته‌ها را می‌گیرد و فهرست را با به هم زدن هر ورودی در فهرست تغییر می‌دهد. هر ورودی که نمی تواند درهم ریخته شود از لیست حذف می شود. 
الف) متد scrambleWord را بنویسید که یک کلمه داده شده را می گیرد و رشته ای را برمی گرداند که شامل نسخه درهم شده کلمه مطابق قوانین زیر است.
  • فرایند درهم‌سازی از حرف اول کلمه شروع می‌شود و از چپ به راست ادامه می‌یابد. 
  • اگر دو حرف متوالی از "A" تشکیل شده باشد به دنبال آن حرفی می آید که "A" نیست، سپس این دو حرف در رشته به دست آمده مبادله می شوند.
  • هنگامی که حروف در دو موقعیت مجاور مبادله شدند، هیچ یک از این دو موقعیت نمی‌توانند در مبادله آتی دخیل باشند.
جدول زیر چندین نمونه از کلمات و نسخه های درهم شده آنها را نشان می دهد. <بدن>
کلمه نتیجه توسط scrambleWord(word) برگردانده شد
"TAN" "TNA"
"ABRACADABRA" "BARCADABARA"
"WHOA" "WHOA"
"AARDVARK" "ARADVRAK"
"تخم مرغ" "تخم مرغ"
"A" "A"
"" ""

روش کامل ScrambleWord زیر.

ایجاد شد
 /** یک کلمه داده شده را درهم می کند.
 * @param کلمه کلمه ای که درهم می شود
 * @return کلمه درهم (احتمالاً برابر با کلمه)
 * پیش شرط: کلمه یا یک رشته خالی است یا فقط دارای حروف بزرگ است.
 * Postcondition: رشته برگشتی از word به صورت زیر ایجاد شد:
 * - کلمه درهم بود، از حرف اول شروع می شود و از چپ به راست ادامه می یابد
 * - دو حرف متوالی متشکل از "A" به دنبال آن نامه ای که «A» مبادله شدند
 * - حروف حداکثر یکبار مبادله شدند
 */
 رشته عمومی ایستا scrambleWord(String word)

ب) متد scrambleOrRemove را بنویسید که هر کلمه در پارامتر wordList را با نسخه درهم شده آن جایگزین می کند و هر کلمه ای را که بعد از درهم تغییر نمی کند حذف می کند. ترتیب نسبی ورودی‌ها در wordList مانند قبل از فراخوانی scrambleOrRemove باقی می‌ماند.
مثال زیر نشان می‌دهد که چگونه محتوای wordList در نتیجه فراخوانی scrambleOrRemove تغییر می‌کند.
قبل از فراخوانی به scrambleOrRemove:

wordList  <بدن>
0 1 2 3 4
"TAN" "ABRACADABRA" "WHOA" "APPLE" "EGGS"

پس از فراخوانی به scrambleOrRemove:
فهرست لغت <بدن>
0 1 2
"TAN" "BARCADABARA" "PAPLE"