summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-10-03 23:04:08 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-10-03 23:04:08 -0400
commitb34c67556d47c74974adad32668dc0801ff9d1ed (patch)
treec4e6555194f31ccbe9192c4f49cca045dda1d506
parent5f8bc7b2e35cf005b44e22e56f8be3f95127fd1b (diff)
parent42fcc633ddc0e328561f984a6aa0b8593765dcf2 (diff)
downloaddesignproject-design-6-b34c67556d47c74974adad32668dc0801ff9d1ed.tar.gz
designproject-design-6-b34c67556d47c74974adad32668dc0801ff9d1ed.tar.bz2
designproject-design-6-b34c67556d47c74974adad32668dc0801ff9d1ed.zip
Merge branch 'main' into user-input-dev
Diffstat (limited to '')
-rw-r--r--data/golf_courses_1000.csv1001
-rw-r--r--data/personaldb.json1
-rw-r--r--pom.xml36
-rw-r--r--src/main/java/design/ParPal.java14
-rw-r--r--src/main/java/design/model/Course.java15
-rw-r--r--src/main/java/design/model/Golfer.java19
-rw-r--r--src/main/java/design/model/Play.java8
-rw-r--r--src/main/java/design/model/Round.java12
-rw-r--r--src/main/java/design/model/course_search/CourseList.java89
-rw-r--r--src/main/java/design/model/course_search/CourseSorter.java11
-rw-r--r--src/main/java/design/model/course_search/ICourse.java18
-rw-r--r--src/main/java/design/model/course_search/SortByDifficulty.java15
-rw-r--r--src/main/java/design/model/course_search/SortByHoles.java15
-rw-r--r--src/main/java/design/model/course_search/SortByLocation.java15
-rw-r--r--src/main/java/design/model/course_search/SortByName.java15
-rw-r--r--src/main/java/design/model/course_search/SortByPar.java15
-rw-r--r--src/main/java/design/persistence/CSVMasterDatabase.java83
-rw-r--r--src/main/java/design/persistence/JSONPersonalDatabase.java118
-rw-r--r--src/main/java/design/persistence/MasterDatabase.java4
-rw-r--r--src/main/java/design/persistence/PersonalDatabase.java10
-rw-r--r--src/test/java/design/TestCourseList.java86
21 files changed, 1583 insertions, 17 deletions
diff --git a/data/golf_courses_1000.csv b/data/golf_courses_1000.csv
new file mode 100644
index 0000000..2246898
--- /dev/null
+++ b/data/golf_courses_1000.csv
@@ -0,0 +1,1001 @@
+Course Name,Difficulty Rating,Location,Number of Holes,Total Par,Par Per Hole
+Mountain View Links,73.4,"Mobile, AL",18,70,5;4;5;3;3;3;3;3;3;3;3;5;3;4;5;5;5;5
+Green Springs,70.0,"Montgomery, AL",18,70,5;5;4;4;4;5;3;5;3;3;5;3;4;3;4;3;4;3
+Sunny Valley,72.8,"Mobile, AL",9,34,4;3;5;5;3;3;3;3;5
+Rolling Valley,66.9,"Montgomery, AL",18,69,3;5;3;5;3;5;4;3;5;4;3;5;3;3;5;4;3;3
+Ocean Side Springs,66.3,"Montgomery, AL",9,33,4;3;3;4;3;3;5;4;4
+Ocean Side Hills,69.3,"Anchorage, AK",18,76,5;5;5;5;5;4;3;3;4;5;3;4;5;4;4;3;4;5
+Rolling Hills,71.3,"Juneau, AK",9,41,5;5;3;5;3;5;5;5;5
+Mountain View Fairways,73.0,"Fairbanks, AK",9,38,5;4;3;4;4;5;5;4;4
+Green Fairways,66.2,"Juneau, AK",9,36,4;4;5;5;3;5;3;4;3
+Green Hills,73.9,"Anchorage, AK",18,77,4;4;3;5;5;3;3;5;4;5;3;5;5;4;5;4;5;5
+Mountain View Fairways,69.6,"Phoenix, AZ",18,69,3;4;4;4;3;3;5;4;3;5;4;5;4;5;3;3;4;3
+Ocean Side Links,71.7,"Mesa, AZ",9,34,3;3;5;3;4;5;4;4;3
+Rolling Valley,69.8,"Mesa, AZ",9,35,5;3;4;3;5;3;3;4;5
+Sunny Hills,69.2,"Tucson, AZ",18,73,3;5;4;4;5;5;5;4;4;3;5;3;4;3;5;5;3;3
+Mountain View Valley,70.6,"Mesa, AZ",18,67,3;3;4;3;3;5;3;4;4;5;5;4;4;5;3;3;3;3
+Ocean Side Valley,68.0,"Fayetteville, AR",18,68,3;3;5;3;3;3;3;4;5;3;4;5;4;4;4;5;4;3
+Ocean Side Links,70.2,"Fayetteville, AR",9,35,3;5;5;3;4;5;4;3;3
+Rolling Springs,69.4,"Little Rock, AR",9,38,3;5;4;3;5;5;4;5;4
+Rolling Springs,65.5,"Fayetteville, AR",9,38,5;5;4;5;4;4;5;3;3
+Sunny Fairways,70.2,"Fayetteville, AR",9,36,3;5;5;4;4;3;5;4;3
+Sunny Fairways,70.3,"San Francisco, CA",18,75,5;3;3;4;3;4;5;5;5;3;4;4;3;5;4;5;5;5
+Sunny Valley,70.9,"San Diego, CA",9,36,5;4;4;4;3;3;4;5;4
+Ocean Side Links,74.1,"San Francisco, CA",18,77,5;4;4;4;3;5;5;3;5;4;5;5;5;5;5;4;3;3
+Green Springs,72.4,"San Francisco, CA",18,67,3;4;3;4;3;4;3;3;5;3;3;3;4;4;5;5;5;3
+Sunny Valley,73.8,"Los Angeles, CA",18,73,5;5;4;4;5;3;4;5;3;3;5;3;4;4;3;5;5;3
+Sunny Hills,65.8,"Denver, CO",9,36,5;3;4;3;4;3;4;5;5
+Sunny Springs,74.3,"Denver, CO",9,33,5;4;3;3;4;3;4;3;4
+Green Valley,70.1,"Denver, CO",18,75,5;3;4;5;5;3;4;5;4;5;5;3;5;3;3;5;5;3
+Ocean Side Links,66.4,"Denver, CO",9,38,5;3;4;4;3;5;4;5;5
+Sunny Links,68.9,"Colorado Springs, CO",18,72,4;4;4;3;3;5;5;4;5;5;4;3;4;3;4;5;4;3
+Mountain View Valley,68.3,"Hartford, CT",9,36,5;4;4;3;5;5;3;4;3
+Mountain View Links,74.0,"Hartford, CT",18,72,3;3;5;5;3;3;5;4;3;5;5;4;3;3;4;5;4;5
+Ocean Side Fairways,74.9,"Stamford, CT",9,36,4;5;3;3;3;5;4;4;5
+Ocean Side Fairways,67.0,"Hartford, CT",18,68,5;3;3;4;5;5;4;3;3;3;4;3;3;3;4;5;5;3
+Green Links,68.8,"Hartford, CT",9,37,5;4;3;4;4;4;5;3;5
+Rolling Fairways,67.2,"Wilmington, DE",9,36,4;4;4;3;4;3;4;5;5
+Mountain View Fairways,73.8,"Wilmington, DE",9,37,5;4;3;3;5;5;5;4;3
+Rolling Valley,73.3,"Dover, DE",18,74,5;4;5;4;3;5;3;4;5;4;3;4;4;4;4;5;3;5
+Green Links,74.0,"Dover, DE",9,39,3;5;5;5;5;5;3;5;3
+Green Springs,73.4,"Newark, DE",18,72,4;4;4;4;4;3;3;3;5;4;5;3;4;5;4;5;4;4
+Rolling Springs,69.6,"Orlando, FL",9,37,5;5;3;3;5;4;4;5;3
+Ocean Side Links,67.7,"Tampa, FL",18,73,5;3;4;5;4;4;4;5;5;4;3;5;4;3;3;3;4;5
+Mountain View Springs,68.8,"Miami, FL",9,37,5;4;3;3;4;5;5;5;3
+Sunny Links,65.1,"Orlando, FL",18,71,4;3;5;5;3;3;3;4;5;3;5;3;5;4;5;4;4;3
+Ocean Side Valley,68.4,"Miami, FL",18,76,3;5;5;4;4;5;5;5;3;5;5;3;5;3;5;5;3;3
+Rolling Valley,73.8,"Augusta, GA",9,39,3;5;3;5;5;5;3;5;5
+Green Fairways,66.4,"Augusta, GA",18,70,5;3;3;3;3;5;5;5;4;4;4;4;4;4;3;3;5;3
+Green Valley,71.7,"Augusta, GA",9,35,3;5;5;4;3;3;3;5;4
+Mountain View Valley,70.7,"Atlanta, GA",9,40,4;5;4;4;4;5;4;5;5
+Mountain View Valley,66.7,"Augusta, GA",18,72,5;3;3;4;3;5;3;5;4;4;5;5;3;4;5;4;4;3
+Sunny Springs,67.5,"Honolulu, HI",18,68,3;4;5;5;4;4;4;4;4;3;3;5;4;3;3;4;3;3
+Ocean Side Valley,70.8,"Honolulu, HI",18,77,4;4;4;4;5;4;3;4;5;5;4;4;4;5;5;5;5;3
+Ocean Side Fairways,74.2,"Hilo, HI",9,34,3;4;4;5;4;4;3;3;4
+Green Valley,73.4,"Kailua, HI",18,70,5;4;4;4;5;4;3;5;3;5;4;4;3;3;4;3;3;4
+Rolling Fairways,72.9,"Honolulu, HI",9,36,3;5;5;4;3;3;4;4;5
+Rolling Hills,70.9,"Boise, ID",9,37,5;4;4;5;3;4;4;5;3
+Green Springs,69.8,"Idaho Falls, ID",9,35,3;3;5;4;3;4;5;5;3
+Mountain View Hills,70.6,"Nampa, ID",18,70,3;4;5;3;4;4;5;3;3;5;4;3;4;3;3;5;5;4
+Green Valley,68.2,"Idaho Falls, ID",9,39,5;4;3;5;4;5;5;4;4
+Mountain View Fairways,66.7,"Nampa, ID",9,37,5;5;4;3;5;3;4;5;3
+Ocean Side Hills,72.2,"Chicago, IL",18,71,3;4;3;3;4;5;4;4;4;3;5;4;5;4;3;5;5;3
+Mountain View Valley,66.1,"Springfield, IL",9,38,5;3;4;3;5;5;5;5;3
+Mountain View Fairways,66.8,"Chicago, IL",9,34,3;4;5;3;4;3;3;4;5
+Mountain View Fairways,66.5,"Chicago, IL",18,76,4;4;3;5;5;4;5;3;5;5;5;5;5;3;4;5;3;3
+Ocean Side Fairways,67.6,"Peoria, IL",9,32,3;3;3;4;3;3;5;3;5
+Sunny Valley,70.2,"Indianapolis, IN",9,36,4;5;4;5;3;3;4;5;3
+Mountain View Valley,71.7,"Fort Wayne, IN",9,38,4;5;5;5;5;3;4;4;3
+Rolling Valley,65.3,"Fort Wayne, IN",9,35,5;5;3;4;3;3;4;5;3
+Mountain View Valley,66.7,"Indianapolis, IN",18,73,3;5;3;5;5;4;5;3;5;3;3;5;5;3;3;4;4;5
+Mountain View Hills,74.0,"Evansville, IN",18,67,3;4;5;4;5;5;3;4;3;3;4;4;3;3;3;3;5;3
+Sunny Hills,74.1,"Cedar Rapids, IA",9,39,5;3;3;4;5;5;5;4;5
+Green Valley,70.9,"Cedar Rapids, IA",18,71,4;4;3;4;3;3;3;5;5;5;3;5;4;4;5;3;5;3
+Ocean Side Valley,72.4,"Cedar Rapids, IA",18,69,3;4;3;4;5;4;4;3;3;4;5;4;3;5;3;4;3;5
+Mountain View Fairways,67.0,"Cedar Rapids, IA",9,41,3;4;4;5;5;5;5;5;5
+Ocean Side Hills,70.7,"Des Moines, IA",9,34,3;5;4;3;3;3;4;4;5
+Ocean Side Hills,72.4,"Overland Park, KS",9,35,4;4;4;3;4;4;3;5;4
+Ocean Side Links,70.5,"Wichita, KS",18,77,5;3;5;3;5;5;3;3;5;5;5;4;4;5;4;5;5;3
+Ocean Side Fairways,67.9,"Topeka, KS",18,66,3;3;3;4;5;3;3;3;3;4;4;4;4;4;3;4;4;5
+Ocean Side Springs,66.4,"Overland Park, KS",9,34,5;3;5;5;3;3;3;3;4
+Sunny Fairways,70.5,"Wichita, KS",9,38,4;5;4;4;4;5;5;4;3
+Mountain View Valley,69.8,"Louisville, KY",18,78,5;4;5;5;5;4;3;5;5;5;3;4;4;5;4;4;5;3
+Green Hills,72.0,"Louisville, KY",18,68,3;3;5;5;4;5;4;4;5;5;3;3;3;3;3;3;4;3
+Sunny Hills,70.9,"Bowling Green, KY",18,66,4;3;4;4;4;4;3;3;3;3;3;4;4;4;4;3;4;5
+Mountain View Springs,66.0,"Bowling Green, KY",9,36,5;5;3;3;4;5;5;3;3
+Mountain View Links,73.2,"Lexington, KY",18,73,5;5;5;4;5;5;4;4;3;3;3;4;4;5;3;3;3;5
+Ocean Side Links,68.7,"Shreveport, LA",9,34,5;4;4;3;4;3;4;3;4
+Mountain View Fairways,66.3,"New Orleans, LA",18,77,5;5;3;5;5;3;4;5;5;4;5;3;5;5;5;4;3;3
+Rolling Hills,74.7,"Shreveport, LA",18,77,5;5;5;3;5;5;3;4;4;4;4;5;4;5;4;4;3;5
+Rolling Valley,73.3,"Shreveport, LA",18,68,5;4;4;3;3;5;3;4;5;3;3;4;4;4;3;5;3;3
+Rolling Hills,71.6,"Baton Rouge, LA",18,71,4;4;5;3;4;3;4;5;4;4;5;4;4;3;4;3;5;3
+Ocean Side Links,71.8,"Bangor, ME",9,36,4;5;5;5;4;3;4;3;3
+Sunny Springs,65.1,"Bangor, ME",18,68,5;3;4;4;3;3;3;4;4;3;4;4;3;5;3;3;5;5
+Rolling Links,70.8,"Bangor, ME",9,35,5;5;3;4;4;5;3;3;3
+Sunny Hills,70.9,"Augusta, ME",18,68,4;5;5;5;3;3;3;4;5;4;4;3;4;3;3;4;3;3
+Green Springs,70.0,"Portland, ME",18,74,3;4;5;4;4;3;3;5;4;4;4;5;4;5;4;5;3;5
+Ocean Side Valley,68.7,"Annapolis, MD",9,36,3;5;5;3;3;4;5;5;3
+Mountain View Springs,70.3,"Frederick, MD",9,39,5;5;4;5;4;5;3;3;5
+Rolling Links,70.3,"Frederick, MD",18,74,5;5;4;4;4;3;4;5;4;5;5;3;4;3;4;4;5;3
+Rolling Valley,71.1,"Annapolis, MD",9,36,4;5;4;4;3;4;4;4;4
+Rolling Valley,66.6,"Annapolis, MD",18,69,5;4;5;3;4;3;4;4;3;4;3;3;4;3;5;3;5;4
+Mountain View Links,65.3,"Worcester, MA",18,71,3;5;3;3;5;5;4;5;4;3;5;3;4;3;5;3;5;3
+Green Valley,73.0,"Boston, MA",9,36,3;3;4;3;5;4;5;5;4
+Rolling Fairways,66.5,"Springfield, MA",18,70,3;4;5;3;5;4;3;3;3;4;4;4;4;3;4;4;5;5
+Ocean Side Hills,73.0,"Springfield, MA",9,35,5;4;4;4;3;3;3;5;4
+Ocean Side Links,69.6,"Boston, MA",9,37,5;4;5;5;3;3;4;5;3
+Mountain View Springs,73.9,"Grand Rapids, MI",18,72,3;4;5;4;4;5;4;5;5;3;5;4;3;4;3;4;3;4
+Ocean Side Fairways,67.3,"Grand Rapids, MI",9,38,3;4;5;4;5;4;5;5;3
+Mountain View Links,65.4,"Lansing, MI",9,36,3;3;5;4;5;5;3;5;3
+Green Springs,72.4,"Grand Rapids, MI",9,38,3;5;5;4;5;4;3;5;4
+Mountain View Valley,69.8,"Detroit, MI",18,72,4;4;5;4;5;5;5;5;3;4;4;4;3;3;3;3;3;5
+Ocean Side Links,67.5,"Duluth, MN",18,72,5;4;4;3;5;5;4;3;4;4;5;4;4;4;3;3;3;5
+Green Hills,69.3,"St. Paul, MN",9,40,5;5;5;4;5;5;5;3;3
+Ocean Side Links,66.7,"Duluth, MN",9,37,4;5;5;3;4;3;5;5;3
+Sunny Valley,69.0,"Minneapolis, MN",9,35,3;4;5;3;4;3;5;5;3
+Ocean Side Valley,70.3,"Duluth, MN",9,29,3;3;3;3;3;3;3;5;3
+Rolling Valley,72.0,"Gulfport, MS",18,73,3;4;4;5;4;4;3;4;4;5;5;5;4;5;3;5;3;3
+Mountain View Hills,70.7,"Gulfport, MS",9,36,5;3;4;4;3;5;4;4;4
+Green Fairways,74.2,"Jackson, MS",18,76,5;4;5;4;4;3;5;4;5;5;5;5;5;5;3;3;3;3
+Green Links,69.6,"Jackson, MS",9,34,3;3;4;5;3;3;5;5;3
+Green Springs,73.7,"Jackson, MS",9,36,3;5;3;3;5;4;3;5;5
+Rolling Springs,66.2,"Springfield, MO",9,38,3;5;5;4;3;3;5;5;5
+Mountain View Springs,69.2,"Springfield, MO",18,75,5;3;4;5;4;5;3;4;3;5;5;4;5;5;4;3;5;3
+Rolling Hills,70.2,"Kansas City, MO",9,36,3;4;3;3;5;5;5;5;3
+Sunny Valley,67.9,"Kansas City, MO",9,37,4;5;4;5;3;4;4;5;3
+Sunny Springs,70.5,"Springfield, MO",18,75,3;3;4;4;4;3;5;5;5;5;4;5;5;4;5;3;5;3
+Green Hills,71.0,"Bozeman, MT",9,35,3;5;4;3;4;4;4;5;3
+Sunny Valley,73.2,"Missoula, MT",18,71,4;5;4;3;3;3;5;5;3;5;5;3;4;4;3;5;4;3
+Rolling Valley,74.9,"Billings, MT",9,33,5;3;3;4;3;4;3;4;4
+Sunny Links,70.5,"Missoula, MT",9,36,4;4;4;4;4;4;3;4;5
+Rolling Hills,69.7,"Billings, MT",18,69,5;3;4;5;3;3;5;4;5;5;3;5;3;3;3;3;4;3
+Rolling Valley,72.4,"Grand Island, NE",18,69,3;3;4;3;5;5;3;5;4;5;4;5;3;3;4;3;3;4
+Green Fairways,65.7,"Omaha, NE",9,36,5;3;3;4;4;4;5;5;3
+Rolling Springs,71.3,"Lincoln, NE",9,32,3;4;5;5;3;3;3;3;3
+Ocean Side Valley,69.0,"Omaha, NE",9,31,3;3;5;3;3;3;3;4;4
+Sunny Hills,71.7,"Grand Island, NE",9,38,4;4;5;4;4;4;4;5;4
+Sunny Fairways,68.0,"Las Vegas, NV",18,71,4;4;5;3;5;3;4;3;3;5;3;5;5;4;3;3;5;4
+Rolling Fairways,72.4,"Las Vegas, NV",18,71,4;5;4;3;3;3;4;5;4;3;4;5;5;5;3;3;3;5
+Rolling Springs,71.2,"Henderson, NV",9,32,3;4;4;3;5;3;3;3;4
+Green Springs,72.9,"Henderson, NV",18,71,3;4;4;5;4;3;5;3;4;4;5;3;4;5;5;3;4;3
+Green Valley,74.3,"Henderson, NV",18,70,4;5;3;5;4;4;4;4;4;5;3;3;4;5;3;3;3;4
+Rolling Links,66.0,"Manchester, NH",18,69,4;5;4;5;5;3;3;3;4;5;5;3;3;5;3;3;3;3
+Rolling Hills,73.1,"Concord, NH",18,75,3;5;4;4;4;5;3;4;4;5;5;5;5;4;3;4;5;3
+Ocean Side Springs,70.1,"Nashua, NH",18,76,4;3;5;5;3;5;4;5;3;4;5;4;3;5;5;5;5;3
+Mountain View Hills,70.0,"Concord, NH",9,34,4;3;3;4;5;4;4;4;3
+Mountain View Hills,68.5,"Manchester, NH",18,69,3;3;4;4;3;3;3;4;5;5;4;3;3;5;5;4;3;5
+Sunny Fairways,73.6,"Jersey City, NJ",18,65,4;4;4;3;3;3;4;3;3;5;3;4;4;4;4;4;3;3
+Ocean Side Valley,67.5,"Newark, NJ",18,74,5;4;3;5;5;3;4;4;3;4;3;4;5;3;5;5;4;5
+Ocean Side Links,70.2,"Jersey City, NJ",18,79,5;5;4;5;4;5;5;4;4;5;4;5;5;5;5;3;3;3
+Mountain View Springs,72.7,"Newark, NJ",9,36,4;4;5;4;5;4;3;4;3
+Rolling Valley,72.5,"Trenton, NJ",18,75,3;5;4;3;3;5;4;5;5;5;5;5;4;3;3;4;4;5
+Mountain View Valley,74.7,"Las Cruces, NM",18,63,3;3;3;4;3;4;5;3;3;3;4;3;3;5;3;4;3;4
+Rolling Valley,71.2,"Las Cruces, NM",18,75,5;5;5;3;4;5;4;5;3;4;5;3;5;3;3;5;5;3
+Sunny Fairways,67.4,"Santa Fe, NM",18,77,3;5;5;4;5;5;4;3;4;3;3;5;4;5;4;5;5;5
+Rolling Springs,70.7,"Santa Fe, NM",9,41,5;4;5;3;5;5;5;4;5
+Ocean Side Valley,74.3,"Las Cruces, NM",18,73,5;4;4;3;4;5;3;4;3;4;3;5;5;4;4;4;4;5
+Sunny Valley,73.8,"Rochester, NY",18,73,4;4;5;4;5;4;5;5;3;5;3;4;4;3;3;5;4;3
+Mountain View Valley,70.5,"New York, NY",9,33,3;3;3;3;3;5;4;4;5
+Green Links,68.0,"New York, NY",9,39,4;4;5;4;5;5;4;4;4
+Sunny Springs,71.7,"Buffalo, NY",9,35,4;5;5;3;3;3;3;5;4
+Sunny Hills,74.0,"Rochester, NY",18,77,3;4;3;5;4;5;3;5;5;4;5;5;5;5;3;5;5;3
+Green Hills,70.8,"Raleigh, NC",18,71,4;5;4;3;3;4;4;3;5;3;4;4;4;5;5;3;5;3
+Green Hills,67.1,"Durham, NC",9,35,4;3;4;3;4;5;3;4;5
+Mountain View Valley,71.1,"Raleigh, NC",9,36,3;3;4;5;5;5;3;4;4
+Ocean Side Links,73.7,"Raleigh, NC",9,41,5;5;4;5;5;4;5;5;3
+Mountain View Hills,65.5,"Charlotte, NC",9,34,4;4;3;5;3;3;4;5;3
+Green Fairways,70.6,"Fargo, ND",9,38,5;3;5;5;5;4;5;3;3
+Ocean Side Valley,66.7,"Bismarck, ND",9,33,4;4;3;4;3;3;3;5;4
+Sunny Links,69.4,"Fargo, ND",9,30,3;3;3;4;3;4;3;3;4
+Ocean Side Links,69.6,"Grand Forks, ND",18,79,5;5;4;5;5;5;5;3;4;3;5;4;5;5;3;5;5;3
+Mountain View Fairways,70.4,"Fargo, ND",18,72,4;4;3;5;3;3;5;5;3;4;4;5;4;4;3;5;5;3
+Mountain View Links,68.0,"Cincinnati, OH",9,38,4;4;4;3;4;5;5;5;4
+Mountain View Valley,74.6,"Columbus, OH",18,72,3;5;4;3;4;4;5;4;4;5;3;5;4;4;3;5;3;4
+Green Springs,66.0,"Columbus, OH",18,64,3;3;4;3;3;3;4;4;3;5;3;5;5;3;3;3;3;4
+Sunny Links,74.0,"Cincinnati, OH",9,38,5;3;5;5;4;3;5;5;3
+Sunny Valley,74.1,"Cleveland, OH",9,35,4;4;5;3;5;3;3;3;5
+Mountain View Valley,71.7,"Tulsa, OK",9,39,3;5;3;5;5;5;5;4;4
+Sunny Links,68.8,"Norman, OK",18,73,4;3;4;4;4;4;3;5;5;5;3;5;3;4;4;5;4;4
+Sunny Fairways,66.8,"Norman, OK",9,38,5;4;4;4;5;4;5;4;3
+Ocean Side Links,74.6,"Norman, OK",9,35,4;3;4;4;5;3;3;5;4
+Sunny Hills,66.6,"Tulsa, OK",18,75,5;5;3;5;3;4;5;4;3;5;5;3;4;3;3;5;5;5
+Sunny Springs,70.5,"Salem, OR",9,38,5;4;4;5;4;5;3;5;3
+Rolling Links,69.7,"Eugene, OR",9,36,3;5;5;4;3;4;4;5;3
+Ocean Side Valley,70.0,"Portland, OR",9,35,3;3;3;5;5;4;4;3;5
+Sunny Springs,74.2,"Portland, OR",9,39,3;4;3;5;5;4;5;5;5
+Green Springs,71.0,"Eugene, OR",18,74,5;5;4;5;5;5;4;3;3;3;4;5;4;3;3;5;4;4
+Green Fairways,68.7,"Pittsburgh, PA",9,31,3;3;3;3;5;4;4;3;3
+Sunny Valley,67.2,"Harrisburg, PA",9,35,3;3;4;5;3;3;5;5;4
+Green Fairways,66.8,"Harrisburg, PA",9,36,4;3;4;3;4;4;5;4;5
+Green Fairways,70.8,"Philadelphia, PA",9,33,3;4;3;5;3;5;3;3;4
+Mountain View Fairways,67.7,"Philadelphia, PA",18,71,4;3;5;4;4;5;4;3;5;4;3;4;5;3;4;4;3;4
+Ocean Side Springs,69.5,"Warwick, RI",9,36,4;5;4;4;5;3;3;3;5
+Mountain View Links,67.2,"Cranston, RI",9,34,4;4;5;3;4;4;3;4;3
+Green Valley,72.0,"Providence, RI",9,37,4;3;4;4;4;4;4;5;5
+Sunny Springs,68.3,"Providence, RI",9,36,4;5;5;4;5;3;4;3;3
+Rolling Fairways,68.5,"Cranston, RI",9,34,5;4;3;3;5;3;4;4;3
+Ocean Side Fairways,68.6,"Columbia, SC",18,73,5;5;5;3;3;4;5;4;3;5;5;4;3;3;4;4;4;4
+Rolling Springs,66.4,"Charleston, SC",18,72,3;5;5;4;3;4;5;5;4;3;5;3;4;3;3;4;4;5
+Ocean Side Valley,73.2,"Columbia, SC",18,73,4;4;3;5;4;5;3;5;3;5;3;4;3;5;5;4;4;4
+Ocean Side Links,70.4,"Myrtle Beach, SC",9,33,3;4;4;4;4;3;3;4;4
+Green Hills,66.0,"Charleston, SC",9,34,3;5;5;4;5;3;3;3;3
+Ocean Side Springs,69.7,"Sioux Falls, SD",18,71,4;5;3;3;5;3;4;4;5;3;3;4;4;4;5;5;3;4
+Rolling Valley,71.8,"Rapid City, SD",9,40,5;5;5;5;3;5;5;4;3
+Rolling Valley,74.9,"Rapid City, SD",18,71,3;3;5;5;3;4;3;3;3;5;4;4;4;5;5;3;5;4
+Green Hills,70.6,"Aberdeen, SD",18,70,4;3;4;4;4;3;3;4;4;4;4;5;3;4;5;4;4;4
+Ocean Side Links,65.4,"Sioux Falls, SD",18,77,5;4;5;5;5;3;4;3;4;5;5;3;4;5;3;4;5;5
+Green Links,71.2,"Memphis, TN",18,74,5;4;5;4;5;3;3;4;5;4;5;4;3;5;4;3;5;3
+Rolling Fairways,71.5,"Knoxville, TN",9,33,3;5;4;4;3;4;4;3;3
+Green Valley,69.4,"Knoxville, TN",18,75,5;4;3;5;5;5;5;3;5;3;5;4;3;5;3;5;3;4
+Mountain View Fairways,69.9,"Nashville, TN",9,37,5;5;3;5;4;4;5;3;3
+Sunny Valley,67.9,"Memphis, TN",18,73,3;5;4;3;4;4;4;4;5;5;3;4;4;4;5;3;4;5
+Green Valley,69.8,"Dallas, TX",9,36,5;5;3;5;4;3;3;5;3
+Rolling Links,66.8,"Austin, TX",9,36,5;4;5;3;5;4;4;3;3
+Sunny Valley,74.7,"Dallas, TX",18,73,4;4;5;4;5;4;4;3;4;5;5;3;3;5;4;3;3;5
+Ocean Side Fairways,74.2,"Houston, TX",18,70,3;4;5;3;4;4;5;3;5;4;3;4;5;3;4;4;4;3
+Sunny Springs,67.1,"Dallas, TX",18,74,3;3;4;5;5;4;4;4;4;4;3;4;3;4;5;5;5;5
+Mountain View Links,73.0,"Ogden, UT",18,72,4;5;3;5;5;4;4;3;5;3;5;4;3;4;4;5;3;3
+Ocean Side Springs,71.6,"Provo, UT",18,73,4;3;3;5;5;5;5;4;4;4;5;4;4;3;3;4;4;4
+Mountain View Hills,74.2,"Ogden, UT",18,76,5;3;3;5;5;5;4;5;5;5;5;3;4;4;5;4;3;3
+Ocean Side Links,65.1,"Ogden, UT",9,38,4;5;3;5;4;5;5;4;3
+Mountain View Links,69.3,"Salt Lake City, UT",18,76,5;5;4;5;3;4;5;4;5;5;3;5;3;3;5;4;3;5
+Mountain View Valley,68.5,"Burlington, VT",18,68,3;4;5;3;3;4;5;3;4;4;5;5;3;3;3;3;3;5
+Rolling Fairways,69.8,"Montpelier, VT",18,72,3;4;5;3;5;4;3;4;3;5;5;5;5;3;3;5;4;3
+Green Valley,67.1,"Rutland, VT",18,71,5;3;5;4;4;5;3;5;4;3;5;3;4;3;5;4;3;3
+Sunny Hills,66.9,"Montpelier, VT",18,68,4;4;5;3;3;3;5;5;3;4;3;3;5;3;3;3;5;4
+Ocean Side Links,72.2,"Burlington, VT",9,41,5;5;4;5;5;5;5;4;3
+Ocean Side Springs,74.0,"Norfolk, VA",9,37,3;5;4;4;4;5;5;3;4
+Green Springs,73.2,"Virginia Beach, VA",18,71,5;3;4;3;4;4;4;3;3;3;5;4;5;4;3;5;4;5
+Rolling Fairways,66.0,"Richmond, VA",9,37,4;4;4;4;5;5;4;4;3
+Ocean Side Fairways,66.7,"Virginia Beach, VA",9,38,5;3;5;3;5;5;3;5;4
+Mountain View Springs,66.4,"Norfolk, VA",18,74,4;5;3;5;5;5;4;4;5;3;3;5;3;4;5;3;5;3
+Mountain View Fairways,68.8,"Tacoma, WA",9,40,5;4;4;4;5;4;5;5;4
+Rolling Hills,69.9,"Seattle, WA",9,36,5;3;4;5;4;3;4;5;3
+Sunny Springs,71.5,"Seattle, WA",9,38,4;5;4;5;5;3;3;5;4
+Mountain View Links,73.0,"Tacoma, WA",9,35,4;3;3;5;4;4;3;5;4
+Rolling Springs,70.9,"Seattle, WA",18,70,4;5;3;3;5;4;5;4;3;4;5;3;5;3;3;3;4;4
+Green Springs,69.1,"Huntington, WV",9,34,5;3;4;3;4;3;3;5;4
+Rolling Fairways,66.4,"Morgantown, WV",9,38,3;4;3;5;4;5;5;5;4
+Sunny Hills,74.6,"Charleston, WV",18,66,4;3;3;4;3;3;3;3;3;5;3;4;3;5;5;4;5;3
+Ocean Side Fairways,73.1,"Charleston, WV",18,72,4;4;3;5;4;4;3;4;4;5;5;3;5;3;3;5;5;3
+Ocean Side Springs,73.7,"Morgantown, WV",9,36,5;3;5;4;3;3;5;3;5
+Sunny Valley,70.9,"Green Bay, WI",18,74,5;3;5;4;4;4;4;3;3;4;4;4;5;5;5;4;5;3
+Rolling Hills,72.6,"Milwaukee, WI",18,72,3;3;5;4;3;4;5;4;4;5;4;5;4;4;3;5;4;3
+Ocean Side Hills,68.5,"Green Bay, WI",9,36,4;5;5;3;5;4;3;4;3
+Green Springs,72.1,"Green Bay, WI",18,68,3;4;4;5;4;4;3;3;4;4;4;4;5;3;5;3;3;3
+Sunny Springs,69.5,"Madison, WI",9,36,4;5;3;5;4;4;4;4;3
+Ocean Side Fairways,67.5,"Laramie, WY",9,38,4;4;5;4;5;5;5;3;3
+Ocean Side Hills,72.8,"Casper, WY",18,74,3;4;3;4;3;5;4;5;5;5;3;5;4;5;5;5;3;3
+Ocean Side Links,68.1,"Casper, WY",18,77,3;4;5;5;4;4;5;4;5;5;4;5;5;3;5;4;4;3
+Rolling Springs,66.8,"Cheyenne, WY",9,35,3;4;4;3;5;5;4;4;3
+Mountain View Springs,74.8,"Cheyenne, WY",18,74,4;3;5;3;5;4;4;5;5;3;5;5;3;5;4;5;3;3
+Green Springs,72.8,"Augusta, GA",9,36,5;5;3;4;5;3;4;3;4
+Mountain View Hills,67.8,"Rochester, NY",9,41,5;5;5;5;5;3;5;5;3
+Sunny Fairways,73.4,"Philadelphia, PA",18,75,3;3;5;4;5;5;5;4;4;5;5;3;5;5;5;3;3;3
+Ocean Side Links,68.3,"New Orleans, LA",9,40,5;5;3;5;5;3;5;4;5
+Green Springs,71.0,"San Francisco, CA",9,32,4;3;5;3;3;3;4;3;4
+Mountain View Links,71.8,"Augusta, ME",18,71,3;3;4;5;4;3;4;4;5;3;4;3;4;5;3;5;4;5
+Ocean Side Fairways,74.4,"Madison, WI",9,36,5;3;4;4;3;4;4;5;4
+Ocean Side Hills,69.6,"Baton Rouge, LA",18,73,5;3;3;4;3;3;4;5;4;5;5;5;4;4;5;4;4;3
+Sunny Valley,65.3,"Little Rock, AR",18,70,5;3;3;5;3;5;3;3;4;3;3;3;4;5;5;4;4;5
+Mountain View Links,71.3,"Buffalo, NY",18,71,4;5;4;3;5;3;3;5;3;5;3;3;5;4;4;5;4;3
+Ocean Side Fairways,67.6,"Reno, NV",18,74,5;4;4;3;5;5;3;5;3;4;4;4;5;4;5;5;3;3
+Green Links,71.4,"Richmond, VA",18,71,3;3;4;5;4;4;4;4;5;3;3;5;4;3;5;5;4;3
+Sunny Hills,66.6,"Eugene, OR",9,37,3;4;5;4;5;3;5;5;3
+Ocean Side Fairways,74.8,"Columbus, OH",9,34,3;4;4;3;4;3;5;5;3
+Ocean Side Valley,65.0,"Lexington, KY",18,67,3;4;3;3;3;4;4;4;5;3;5;4;3;3;3;3;5;5
+Rolling Hills,73.0,"Minneapolis, MN",18,73,3;3;5;5;4;4;4;5;5;4;3;5;5;3;3;4;4;4
+Ocean Side Springs,73.1,"Aberdeen, SD",18,73,5;3;4;3;5;5;4;4;5;4;4;3;4;4;3;5;5;3
+Mountain View Fairways,73.6,"Harrisburg, PA",18,74,4;4;3;4;3;5;5;4;3;4;5;5;4;3;5;5;5;3
+Green Links,69.8,"Concord, NH",9,34,3;5;5;4;3;3;5;3;3
+Sunny Valley,65.7,"Newark, NJ",18,72,3;4;5;3;5;4;5;3;4;3;4;4;5;3;3;5;5;4
+Ocean Side Valley,69.5,"Birmingham, AL",9,37,5;3;5;4;5;4;3;3;5
+Ocean Side Hills,71.3,"Cleveland, OH",18,70,3;3;5;3;5;4;3;4;4;3;4;4;4;4;5;4;3;5
+Rolling Fairways,67.8,"Kailua, HI",18,70,3;3;3;4;3;5;5;5;3;3;5;5;3;3;5;5;4;3
+Ocean Side Valley,65.0,"Honolulu, HI",18,69,3;4;3;3;3;5;5;5;5;3;5;3;3;5;4;3;3;4
+Ocean Side Fairways,65.5,"Davenport, IA",9,38,5;4;3;5;4;3;4;5;5
+Rolling Fairways,68.7,"Lincoln, NE",18,74,4;5;3;4;5;4;3;5;4;5;3;5;4;5;4;4;4;3
+Mountain View Springs,65.8,"Atlanta, GA",9,36,3;5;5;3;3;5;3;4;5
+Sunny Hills,68.2,"Tacoma, WA",9,37,5;4;4;4;5;5;4;3;3
+Ocean Side Hills,73.1,"Worcester, MA",18,69,3;3;3;3;4;3;3;4;4;4;3;5;3;5;5;4;5;5
+Rolling Springs,70.6,"Myrtle Beach, SC",9,34,4;3;3;4;5;3;4;4;4
+Mountain View Springs,67.9,"Fairbanks, AK",9,34,4;5;5;4;3;3;3;3;4
+Rolling Hills,68.9,"Trenton, NJ",18,73,3;5;4;3;3;5;3;3;4;4;5;5;4;4;5;5;4;4
+Mountain View Fairways,67.2,"Hilo, HI",9,35,5;5;3;4;4;4;3;4;3
+Mountain View Fairways,67.1,"Miami, FL",9,36,3;5;3;5;4;3;3;5;5
+Ocean Side Springs,67.1,"Anchorage, AK",9,39,5;4;4;4;5;5;4;5;3
+Green Fairways,67.7,"Tacoma, WA",9,35,5;3;3;3;4;4;5;3;5
+Green Links,67.6,"Little Rock, AR",9,32,5;3;3;3;3;3;4;5;3
+Sunny Hills,65.7,"Anchorage, AK",18,68,3;5;4;4;3;3;5;5;4;5;4;3;3;3;5;3;3;3
+Sunny Hills,69.6,"Fort Smith, AR",18,72,4;3;4;4;4;3;5;5;5;4;3;4;5;3;5;3;4;4
+Green Links,69.9,"San Francisco, CA",9,34,5;4;3;5;3;3;3;3;5
+Rolling Valley,65.5,"Honolulu, HI",9,37,5;3;3;4;5;5;3;5;4
+Ocean Side Links,72.4,"Lincoln, NE",18,69,3;5;3;4;3;4;5;5;5;3;3;4;4;3;3;5;3;4
+Rolling Fairways,67.1,"Los Angeles, CA",9,31,3;3;3;4;3;3;5;4;3
+Sunny Links,71.2,"New Haven, CT",18,66,5;5;3;3;4;3;4;3;3;3;4;4;3;3;5;3;5;3
+Green Valley,66.0,"Green Bay, WI",9,33,3;3;3;5;4;4;5;3;3
+Green Hills,65.2,"Augusta, GA",9,38,4;5;4;4;4;3;5;5;4
+Ocean Side Links,74.7,"Phoenix, AZ",9,33,4;3;5;4;5;3;3;3;3
+Rolling Valley,73.0,"Indianapolis, IN",18,74,5;5;4;4;4;5;4;5;5;3;5;3;3;4;4;4;3;4
+Ocean Side Hills,70.8,"Springfield, IL",9,38,4;4;5;4;5;5;3;3;5
+Sunny Fairways,71.2,"Orlando, FL",9,37,5;3;4;5;4;4;5;4;3
+Mountain View Hills,67.2,"New Orleans, LA",9,35,5;3;5;4;5;3;3;3;4
+Mountain View Hills,71.6,"Grand Forks, ND",18,75,5;5;4;4;5;3;4;5;4;4;3;5;4;5;3;4;5;3
+Rolling Springs,71.0,"Boulder, CO",18,75,5;3;5;4;4;4;5;4;3;5;4;3;3;3;5;5;5;5
+Mountain View Valley,70.8,"Rapid City, SD",9,32,4;3;3;3;4;3;4;4;4
+Mountain View Fairways,74.1,"Juneau, AK",9,33,4;4;3;3;5;4;3;4;3
+Mountain View Fairways,70.9,"Colorado Springs, CO",9,34,3;4;4;4;4;5;3;4;3
+Sunny Springs,69.8,"Salem, OR",18,71,4;4;4;5;5;3;3;5;3;3;3;5;5;4;4;3;3;5
+Ocean Side Links,71.6,"Augusta, GA",9,36,4;3;3;4;4;5;5;5;3
+Sunny Fairways,74.2,"Idaho Falls, ID",9,35,4;3;3;4;5;3;4;4;5
+Mountain View Fairways,71.5,"Fargo, ND",18,72,5;3;4;3;5;4;3;4;3;4;5;3;4;5;5;4;4;4
+Mountain View Valley,71.1,"Grand Forks, ND",18,76,5;5;5;5;5;4;5;3;5;4;4;3;3;4;5;3;3;5
+Rolling Springs,72.7,"Green Bay, WI",18,73,4;5;3;3;3;3;5;3;5;5;5;5;4;5;3;4;3;5
+Ocean Side Links,72.4,"Austin, TX",9,35,4;4;5;3;3;3;4;4;5
+Green Hills,66.8,"Wilmington, DE",9,36,3;5;5;5;3;4;3;5;3
+Mountain View Fairways,70.5,"Omaha, NE",9,36,5;4;3;3;4;4;5;3;5
+Green Fairways,74.9,"Davenport, IA",9,36,3;3;5;4;4;5;5;4;3
+Ocean Side Links,70.7,"Indianapolis, IN",18,74,4;3;4;5;5;5;5;3;4;4;4;5;5;4;3;4;3;4
+Ocean Side Valley,69.5,"Missoula, MT",9,38,5;4;5;3;5;4;5;4;3
+Ocean Side Fairways,72.9,"Boulder, CO",18,73,3;5;4;5;4;3;5;3;3;3;5;5;5;5;3;5;4;3
+Sunny Springs,69.1,"Memphis, TN",9,36,4;4;3;5;4;3;4;5;4
+Green Valley,70.2,"Baton Rouge, LA",18,74,4;3;4;5;5;4;3;5;5;5;4;5;5;3;4;4;3;3
+Mountain View Valley,69.4,"Duluth, MN",9,35,4;3;5;4;3;4;4;3;5
+Sunny Fairways,68.1,"Columbia, SC",9,38,5;4;3;5;4;5;4;3;5
+Mountain View Links,65.3,"Cincinnati, OH",18,70,3;5;5;5;5;3;4;4;4;3;4;4;5;3;3;3;3;4
+Green Valley,70.5,"Birmingham, AL",18,69,5;5;5;4;3;3;4;3;3;3;3;5;3;5;4;4;4;3
+Sunny Links,71.9,"Trenton, NJ",9,35,3;3;4;5;3;3;4;5;5
+Green Valley,72.2,"Bangor, ME",18,72,4;4;5;3;3;5;3;3;3;5;5;3;4;5;3;5;4;5
+Mountain View Hills,68.5,"Omaha, NE",18,68,3;4;4;5;3;3;4;3;4;5;3;3;3;4;3;4;5;5
+Ocean Side Fairways,72.1,"Stamford, CT",18,76,4;3;4;4;5;3;5;5;5;5;5;5;3;5;3;4;4;4
+Green Fairways,71.0,"Kailua, HI",9,36,4;4;3;5;5;5;4;3;3
+Ocean Side Fairways,73.2,"Henderson, NV",9,41,5;5;4;5;4;5;5;5;3
+Green Springs,68.0,"Madison, WI",9,35,4;4;3;4;4;5;3;5;3
+Mountain View Valley,73.2,"Oklahoma City, OK",18,77,5;5;5;4;5;4;3;5;5;4;5;4;4;5;3;5;3;3
+Rolling Valley,66.0,"Juneau, AK",18,74,3;5;5;4;3;5;5;3;5;5;3;5;3;4;5;5;3;3
+Green Valley,66.6,"San Diego, CA",9,37,5;5;3;3;4;5;5;4;3
+Mountain View Springs,71.2,"Houston, TX",9,38,5;5;5;4;5;4;4;3;3
+Sunny Springs,74.4,"Green Bay, WI",9,36,4;3;5;5;3;5;3;5;3
+Rolling Springs,67.0,"Rutland, VT",9,35,3;3;4;5;4;5;4;4;3
+Mountain View Fairways,70.1,"Fort Wayne, IN",18,74,4;3;5;5;3;4;4;5;4;3;3;5;3;4;5;5;4;5
+Sunny Links,71.6,"Ogden, UT",9,38,4;4;5;3;4;5;5;5;3
+Mountain View Fairways,73.4,"Topeka, KS",9,32,3;4;3;4;3;3;4;5;3
+Rolling Hills,66.7,"Savannah, GA",18,69,3;4;4;5;4;5;4;4;3;4;3;4;4;3;4;4;3;4
+Mountain View Fairways,65.8,"Salt Lake City, UT",9,40,4;5;5;5;5;5;5;3;3
+Ocean Side Springs,68.9,"Spokane, WA",9,36,3;5;4;4;5;4;4;4;3
+Sunny Valley,69.2,"Kailua, HI",18,74,4;5;4;4;4;5;3;5;5;5;3;5;4;4;4;4;3;3
+Mountain View Springs,67.7,"Providence, RI",18,72,3;3;5;3;4;5;5;4;5;5;5;3;4;4;4;4;3;3
+Mountain View Valley,70.9,"Pittsburgh, PA",18,75,5;5;3;5;5;3;4;5;5;3;5;3;3;5;3;3;5;5
+Sunny Valley,68.7,"Nampa, ID",18,68,4;3;5;3;4;5;5;4;3;3;3;3;3;5;3;4;4;4
+Green Links,73.5,"Orlando, FL",9,37,5;5;4;3;4;5;5;3;3
+Rolling Links,67.3,"Hilo, HI",9,36,4;5;4;3;4;5;4;4;3
+Rolling Fairways,69.4,"Grand Forks, ND",18,72,5;3;3;5;5;3;4;4;5;4;3;4;4;4;3;3;5;5
+Sunny Links,68.2,"Austin, TX",18,74,4;5;5;3;3;4;4;3;3;5;4;3;5;5;4;5;5;4
+Green Links,74.6,"Fort Smith, AR",18,71,3;3;4;5;3;4;3;4;5;3;5;3;4;5;5;5;4;3
+Sunny Fairways,73.3,"Houston, TX",9,34,4;5;3;5;4;4;3;3;3
+Sunny Links,69.4,"Charlotte, NC",9,38,4;5;5;3;5;5;5;3;3
+Mountain View Links,71.0,"Phoenix, AZ",18,72,3;4;4;5;4;4;3;4;3;4;3;5;4;5;5;4;3;5
+Green Hills,71.1,"Fairbanks, AK",18,72,5;5;5;3;4;3;4;3;5;4;5;4;4;4;4;3;4;3
+Rolling Links,68.5,"Virginia Beach, VA",18,74,4;5;4;3;5;3;4;3;5;5;5;4;5;4;5;4;3;3
+Ocean Side Fairways,70.3,"Des Moines, IA",9,33,3;3;5;3;5;3;4;4;3
+Mountain View Fairways,65.7,"Evansville, IN",18,70,5;4;3;4;3;5;3;4;5;3;3;4;4;3;4;3;5;5
+Green Hills,70.0,"San Francisco, CA",9,41,5;4;4;5;3;5;5;5;5
+Rolling Valley,69.7,"Henderson, NV",18,71,4;5;4;4;3;4;3;4;4;5;5;3;3;3;4;4;4;5
+Green Fairways,65.7,"Evansville, IN",9,37,3;5;4;3;3;5;5;4;5
+Sunny Fairways,67.3,"Jersey City, NJ",9,38,3;4;5;4;5;5;5;4;3
+Mountain View Hills,74.4,"Kansas City, MO",9,38,5;3;5;4;5;5;5;3;3
+Green Fairways,65.4,"Birmingham, AL",18,69,4;4;5;4;4;5;3;3;4;3;3;4;5;3;4;4;4;3
+Sunny Springs,68.7,"Virginia Beach, VA",9,32,4;3;5;5;3;3;3;3;3
+Mountain View Valley,74.6,"Miami, FL",9,35,3;4;4;4;5;3;4;5;3
+Green Fairways,72.9,"Nashville, TN",18,72,5;4;4;3;3;4;4;5;4;3;3;5;5;5;4;3;4;4
+Green Hills,68.0,"Mesa, AZ",18,73,5;5;5;4;4;4;4;3;5;4;3;3;3;5;4;4;4;4
+Ocean Side Links,68.4,"Tulsa, OK",9,33,4;4;4;3;4;3;3;5;3
+Sunny Links,65.1,"Mobile, AL",18,71,5;3;3;5;3;5;3;3;3;3;4;5;3;4;5;4;5;5
+Green Springs,70.5,"Birmingham, AL",18,73,3;3;4;5;4;5;3;5;5;5;3;5;5;4;4;3;4;3
+Mountain View Hills,70.0,"Phoenix, AZ",9,32,3;4;4;3;5;3;4;3;3
+Sunny Fairways,70.1,"Nashua, NH",18,66,5;3;4;5;3;4;3;5;3;3;3;3;4;3;4;4;4;3
+Rolling Valley,70.2,"Henderson, NV",9,35,3;4;3;3;4;4;5;5;4
+Ocean Side Fairways,74.0,"Jackson, MS",9,36,5;3;4;4;5;4;3;4;4
+Sunny Hills,67.9,"Shreveport, LA",9,33,3;3;3;5;5;3;3;3;5
+Green Links,74.6,"Bangor, ME",9,33,4;3;4;4;3;3;3;4;5
+Ocean Side Valley,68.8,"Charlotte, NC",18,76,5;5;4;4;3;3;5;5;3;4;4;5;5;5;4;5;4;3
+Green Valley,69.9,"Colorado Springs, CO",18,72,3;3;3;3;5;5;5;4;3;4;5;5;5;3;4;5;4;3
+Rolling Links,70.9,"Nashua, NH",9,34,3;3;5;3;4;3;4;4;5
+Mountain View Valley,68.3,"Kansas City, MO",18,73,4;5;4;5;5;4;3;3;5;5;5;4;4;3;3;4;4;3
+Mountain View Links,71.2,"Lexington, KY",18,74,4;5;3;5;5;4;5;5;5;4;3;5;3;5;4;3;3;3
+Rolling Springs,65.3,"Mesa, AZ",18,72,4;5;3;4;3;5;3;3;5;3;4;5;4;5;3;5;3;5
+Green Springs,72.3,"Tampa, FL",18,70,5;4;4;5;3;3;4;5;4;4;5;3;4;4;3;3;4;3
+Sunny Valley,66.7,"Provo, UT",9,38,5;4;4;3;4;5;4;4;5
+Rolling Valley,67.0,"Newark, NJ",18,78,5;3;5;4;4;4;4;5;3;5;5;5;4;5;5;4;5;3
+Mountain View Valley,65.2,"Mesa, AZ",9,37,5;4;5;3;5;5;3;3;4
+Green Springs,69.2,"Jersey City, NJ",9,33,3;3;3;5;5;4;4;3;3
+Green Springs,73.5,"Atlanta, GA",9,36,5;4;5;3;4;3;3;5;4
+Rolling Hills,73.1,"Seattle, WA",18,72,4;3;5;3;3;4;5;5;4;4;5;4;3;3;4;3;5;5
+Sunny Fairways,70.1,"Charleston, SC",9,34,3;3;4;5;4;5;3;3;4
+Rolling Hills,69.4,"Morgantown, WV",18,76,5;5;4;3;5;3;4;5;4;4;4;5;4;3;5;5;5;3
+Sunny Hills,70.7,"Dover, DE",9,33,4;3;3;3;5;3;3;4;5
+Ocean Side Springs,74.0,"Durham, NC",9,37,3;5;5;3;5;5;3;3;5
+Mountain View Links,72.2,"Atlanta, GA",18,74,4;4;5;4;4;5;4;3;3;5;4;4;4;5;3;3;5;5
+Green Fairways,66.0,"Baltimore, MD",18,65,4;5;4;3;4;4;5;4;3;3;3;3;3;4;3;4;3;3
+Mountain View Fairways,71.1,"Santa Fe, NM",9,35,4;3;4;5;3;4;4;3;5
+Green Valley,69.9,"Eugene, OR",18,63,4;3;3;3;3;3;4;3;3;3;4;5;5;4;4;3;3;3
+Ocean Side Fairways,68.9,"Springfield, MA",9,35,4;4;3;3;3;5;5;3;5
+Sunny Links,73.0,"Huntington, WV",9,35,4;3;4;3;5;3;5;3;5
+Sunny Springs,70.8,"Boise, ID",9,35,4;4;5;5;4;3;3;3;4
+Mountain View Valley,73.6,"Nashua, NH",9,31,3;3;4;3;3;4;4;4;3
+Rolling Fairways,68.0,"Kansas City, MO",9,35,3;4;4;4;5;3;4;3;5
+Ocean Side Links,65.1,"Cincinnati, OH",18,73,3;4;3;5;4;4;4;5;3;4;5;5;4;4;3;5;5;3
+Sunny Links,69.3,"Bowling Green, KY",9,38,5;4;5;4;3;5;3;4;5
+Rolling Hills,71.6,"Mesa, AZ",18,75,5;5;4;3;5;5;5;5;3;4;3;3;4;4;3;5;4;5
+Green Springs,72.6,"Knoxville, TN",18,77,4;5;3;4;3;4;4;5;5;4;5;5;5;4;4;5;5;3
+Ocean Side Springs,65.7,"Boise, ID",9,34,3;3;3;4;3;4;5;4;5
+Green Valley,72.1,"Richmond, VA",18,70,4;3;5;4;4;3;3;4;5;5;4;4;3;3;4;5;3;4
+Rolling Fairways,70.2,"Kansas City, MO",18,71,3;4;4;5;4;4;5;3;3;4;3;3;5;4;4;5;3;5
+Ocean Side Valley,73.3,"Grand Island, NE",9,41,5;5;5;5;4;5;4;5;3
+Green Valley,73.3,"Colorado Springs, CO",18,75,4;5;5;4;3;5;5;5;3;4;4;5;3;4;5;3;5;3
+Green Links,72.6,"Huntington, WV",18,75,5;4;5;4;4;5;4;5;3;5;4;3;5;4;3;4;5;3
+Ocean Side Hills,74.2,"Chicago, IL",9,37,4;3;3;5;5;5;5;4;3
+Green Valley,69.6,"Wichita, KS",9,30,4;4;3;3;3;3;3;3;4
+Ocean Side Springs,70.9,"Rapid City, SD",18,71,4;3;3;4;4;5;5;3;3;4;3;4;5;5;4;4;5;3
+Mountain View Fairways,73.7,"Miami, FL",9,36,5;3;4;4;5;5;4;3;3
+Rolling Springs,68.6,"Fairbanks, AK",18,72,5;4;4;5;5;3;5;3;5;3;4;3;3;5;3;4;3;5
+Mountain View Links,70.6,"Memphis, TN",9,35,3;5;3;4;5;4;3;4;4
+Sunny Springs,66.8,"Santa Fe, NM",18,70,4;5;3;4;3;4;4;3;5;4;3;5;5;3;3;4;5;3
+Ocean Side Links,70.8,"Duluth, MN",9,36,5;5;3;4;5;4;4;3;3
+Mountain View Links,73.4,"Springfield, IL",18,73,4;3;4;4;5;4;5;3;4;4;5;3;4;4;4;4;5;4
+Sunny Links,71.9,"Bowling Green, KY",18,74,4;4;4;4;5;4;4;4;4;5;4;3;3;4;5;5;5;3
+Mountain View Fairways,66.3,"Biloxi, MS",18,66,3;3;3;4;3;4;4;4;5;3;3;4;5;3;4;3;4;4
+Green Fairways,66.3,"Fairbanks, AK",9,35,3;5;3;4;4;3;5;3;5
+Ocean Side Hills,69.4,"Durham, NC",18,69,3;4;3;4;5;3;4;3;5;5;3;5;4;3;3;4;5;3
+Green Fairways,68.6,"Peoria, IL",9,40,5;5;4;5;5;5;4;4;3
+Ocean Side Fairways,74.9,"Harrisburg, PA",9,39,5;5;5;4;4;3;5;4;4
+Sunny Valley,67.7,"Manchester, NH",9,36,5;4;3;4;5;4;3;5;3
+Mountain View Fairways,71.9,"Eugene, OR",9,38,5;4;3;3;5;5;5;5;3
+Ocean Side Valley,72.7,"Buffalo, NY",9,33,3;5;4;3;3;4;4;4;3
+Ocean Side Links,72.8,"Denver, CO",9,36,3;4;4;5;5;4;3;5;3
+Green Springs,74.5,"Montgomery, AL",9,34,3;4;4;4;4;4;3;4;4
+Rolling Valley,67.3,"Jersey City, NJ",18,73,3;3;5;3;4;5;5;4;5;4;5;4;4;4;3;5;3;4
+Mountain View Springs,68.8,"Richmond, VA",9,35,4;4;4;3;4;4;5;4;3
+Sunny Hills,69.6,"Laramie, WY",9,34,5;5;3;3;3;3;4;3;5
+Green Fairways,74.6,"Salem, OR",9,39,4;5;4;3;5;4;5;5;4
+Mountain View Hills,73.5,"Baltimore, MD",9,36,5;5;5;4;3;3;5;3;3
+Green Fairways,65.2,"Springfield, MO",18,67,3;5;5;3;5;3;4;3;5;4;3;3;5;3;3;3;3;4
+Ocean Side Springs,67.1,"Nashville, TN",18,72,3;3;5;3;5;5;3;4;3;4;4;5;5;4;5;4;4;3
+Rolling Valley,72.9,"Springfield, IL",9,32,3;4;4;3;3;3;4;3;5
+Ocean Side Springs,65.8,"Birmingham, AL",18,74,4;5;3;3;3;5;5;5;4;4;5;4;3;5;5;5;3;3
+Sunny Springs,66.2,"Providence, RI",18,70,3;5;5;4;3;4;3;4;4;4;3;3;5;3;5;4;3;5
+Green Valley,72.0,"Wichita, KS",18,74,3;3;4;4;4;5;5;5;4;4;4;5;5;3;5;3;5;3
+Ocean Side Fairways,72.4,"Peoria, IL",18,70,4;5;5;3;3;4;5;3;5;3;4;3;4;4;5;4;3;3
+Mountain View Hills,72.3,"Memphis, TN",9,33,3;5;5;3;3;4;3;4;3
+Mountain View Valley,71.1,"Salt Lake City, UT",9,39,3;4;4;5;4;5;4;5;5
+Green Springs,71.7,"Wichita, KS",18,74,5;4;4;5;5;3;5;3;4;4;5;3;4;4;3;5;3;5
+Green Fairways,68.4,"Lansing, MI",9,37,3;5;5;3;5;5;5;3;3
+Green Springs,65.8,"Dover, DE",9,35,3;5;3;4;4;4;4;4;4
+Ocean Side Fairways,65.6,"Portland, ME",9,31,4;3;4;3;4;4;3;3;3
+Rolling Fairways,69.8,"Charlotte, NC",18,70,3;5;4;5;4;4;5;3;3;4;5;5;4;3;3;3;3;4
+Rolling Springs,70.0,"Cincinnati, OH",18,70,5;5;3;3;3;5;3;3;4;5;5;3;3;3;5;4;3;5
+Green Springs,67.3,"Grand Forks, ND",9,39,4;3;5;4;5;4;5;4;5
+Ocean Side Springs,69.4,"Trenton, NJ",18,75,4;4;4;5;3;4;4;5;3;3;5;5;3;5;5;5;5;3
+Green Links,70.3,"Birmingham, AL",9,34,3;4;5;5;3;4;3;4;3
+Green Hills,68.1,"Bozeman, MT",9,36,3;4;5;5;4;4;3;5;3
+Mountain View Hills,67.6,"Burlington, VT",18,69,5;4;3;5;4;4;4;3;3;3;3;5;5;3;3;4;4;4
+Rolling Springs,69.2,"Raleigh, NC",18,72,4;4;5;5;3;5;3;5;3;5;4;5;3;3;3;4;4;4
+Mountain View Fairways,70.6,"Dallas, TX",9,38,3;5;4;4;5;4;5;5;3
+Ocean Side Springs,73.8,"Boston, MA",9,37,4;5;5;3;3;4;3;5;5
+Green Links,71.2,"Boise, ID",18,72,5;4;4;3;5;4;5;4;4;3;5;3;5;4;5;3;3;3
+Sunny Fairways,72.7,"Santa Fe, NM",18,72,3;3;3;5;3;4;3;5;4;5;5;5;5;3;4;3;4;5
+Green Fairways,65.1,"Provo, UT",9,40,4;5;5;5;5;5;5;3;3
+Rolling Fairways,72.9,"Henderson, NV",9,34,3;4;4;4;4;4;3;4;4
+Mountain View Fairways,68.7,"Baton Rouge, LA",9,37,5;5;5;5;3;5;3;3;3
+Ocean Side Valley,65.7,"Shreveport, LA",18,72,3;3;3;4;5;3;3;5;4;3;5;4;5;4;5;4;4;5
+Green Springs,70.1,"Henderson, NV",18,72,5;3;4;5;5;3;3;4;5;3;4;3;5;3;4;3;5;5
+Ocean Side Links,74.8,"Salt Lake City, UT",9,35,4;4;3;3;3;5;4;4;5
+Ocean Side Hills,70.2,"Green Bay, WI",9,33,4;3;4;3;4;4;3;5;3
+Ocean Side Links,70.5,"Memphis, TN",18,74,4;3;5;4;4;5;4;3;4;4;4;5;5;4;5;5;3;3
+Green Hills,73.1,"Sioux Falls, SD",9,33,5;3;4;5;3;3;3;3;4
+Rolling Links,67.5,"Rutland, VT",18,74,5;3;5;3;4;4;5;4;5;3;5;5;4;4;5;4;3;3
+Sunny Valley,74.5,"Las Cruces, NM",9,31,3;4;3;5;4;3;3;3;3
+Ocean Side Hills,69.2,"Madison, WI",18,75,4;3;3;5;4;3;4;4;4;5;5;5;5;5;5;5;3;3
+Green Springs,66.7,"Dover, DE",18,72,4;5;3;4;5;5;4;4;5;3;4;5;3;4;3;3;4;4
+Rolling Hills,74.2,"Pittsburgh, PA",18,67,3;4;4;3;3;5;4;3;4;4;3;4;5;3;3;4;3;5
+Green Valley,73.9,"Wichita, KS",18,71,5;3;4;3;4;5;5;4;4;4;4;3;4;4;5;3;4;3
+Green Valley,67.1,"Augusta, GA",18,71,4;5;5;3;4;4;3;4;5;3;4;3;3;5;4;5;3;4
+Rolling Hills,72.6,"San Francisco, CA",18,70,3;3;4;3;4;5;3;3;4;5;5;5;3;5;4;4;4;3
+Rolling Fairways,71.7,"Omaha, NE",9,36,5;5;4;3;5;3;5;3;3
+Green Valley,68.1,"Houston, TX",9,36,3;5;3;5;4;4;4;4;4
+Ocean Side Links,71.5,"Madison, WI",18,66,3;3;3;3;3;5;3;3;4;4;3;4;3;5;3;5;4;5
+Sunny Links,72.9,"Miami, FL",18,72,4;5;4;3;5;4;3;5;4;5;5;5;3;5;3;3;3;3
+Rolling Hills,72.2,"Nampa, ID",9,34,4;3;4;3;5;5;4;3;3
+Green Links,74.2,"Sioux Falls, SD",18,71,5;3;4;3;5;5;4;3;5;3;4;4;4;4;4;3;4;4
+Rolling Hills,72.6,"Morgantown, WV",9,36,3;5;3;5;5;4;4;4;3
+Green Fairways,71.6,"Boston, MA",18,67,5;5;5;3;3;5;4;3;3;3;3;3;4;5;3;3;3;4
+Ocean Side Valley,66.6,"Concord, NH",9,33,4;3;4;3;3;4;4;3;5
+Mountain View Fairways,66.2,"Knoxville, TN",18,76,4;3;3;3;5;5;3;5;5;5;4;5;4;4;4;4;5;5
+Green Springs,69.3,"Detroit, MI",9,37,5;4;5;5;3;4;4;4;3
+Sunny Springs,71.0,"Cedar Rapids, IA",18,73,4;5;3;4;5;4;4;3;3;5;5;4;5;4;4;3;5;3
+Sunny Links,65.2,"Baton Rouge, LA",9,35,5;4;3;4;3;3;5;3;5
+Green Fairways,73.6,"Green Bay, WI",9,33,5;4;4;3;3;5;3;3;3
+Sunny Hills,74.3,"Tulsa, OK",9,35,4;5;4;5;4;3;4;3;3
+Green Valley,67.5,"Frederick, MD",18,69,4;4;5;3;4;5;4;4;4;3;5;3;4;3;4;3;3;4
+Sunny Springs,69.8,"Little Rock, AR",9,39,4;5;4;5;4;5;5;4;3
+Mountain View Links,71.8,"Miami, FL",9,38,3;3;3;5;4;5;5;5;5
+Mountain View Fairways,65.4,"Pittsburgh, PA",9,31,3;4;3;3;4;3;4;3;4
+Green Fairways,65.3,"Hartford, CT",9,37,5;3;3;5;4;5;5;4;3
+Green Hills,72.6,"Newark, DE",9,35,4;5;5;4;3;5;3;3;3
+Ocean Side Links,69.1,"Sioux Falls, SD",18,64,5;3;3;3;4;3;3;3;3;3;4;4;5;4;3;5;3;3
+Sunny Fairways,66.9,"Tampa, FL",9,35,4;3;3;4;5;4;3;4;5
+Green Valley,74.6,"Phoenix, AZ",18,72,4;3;4;3;4;5;5;5;4;5;4;3;4;4;4;3;4;4
+Mountain View Springs,66.5,"Oklahoma City, OK",9,36,4;3;5;4;3;3;5;4;5
+Ocean Side Hills,69.0,"Wichita, KS",18,74,4;4;4;5;3;5;3;4;4;5;5;5;5;3;4;5;3;3
+Rolling Hills,72.1,"Trenton, NJ",9,34,3;3;4;3;5;3;4;4;5
+Sunny Valley,68.7,"Fort Smith, AR",18,72,4;5;4;5;4;5;3;5;3;3;5;5;5;3;3;3;4;3
+Rolling Valley,72.9,"Dallas, TX",18,73,5;4;4;4;4;3;5;5;4;4;4;4;3;4;3;5;5;3
+Green Links,74.0,"Springfield, IL",18,74,4;5;5;4;4;4;4;4;5;3;5;4;4;3;5;3;4;4
+Mountain View Springs,66.7,"Hartford, CT",9,33,4;3;3;4;4;4;3;4;4
+Rolling Hills,71.7,"Miami, FL",9,36,3;5;3;3;4;4;5;4;5
+Ocean Side Valley,71.5,"Provo, UT",9,39,5;3;5;3;5;5;3;5;5
+Sunny Valley,66.0,"Grand Rapids, MI",18,74,5;5;4;4;5;5;4;5;3;3;5;3;3;3;3;5;4;5
+Mountain View Valley,65.4,"Santa Fe, NM",9,36,5;3;5;3;3;4;5;3;5
+Sunny Hills,66.7,"Buffalo, NY",9,34,5;3;5;4;3;3;3;4;4
+Mountain View Valley,65.4,"Harrisburg, PA",9,33,3;3;5;5;4;4;3;3;3
+Rolling Fairways,72.6,"Myrtle Beach, SC",18,76,5;5;5;3;5;4;4;5;5;5;4;5;3;5;3;4;3;3
+Mountain View Fairways,71.2,"Montgomery, AL",18,75,3;5;3;3;5;5;4;3;4;5;3;5;5;3;5;5;5;4
+Green Hills,69.1,"Fairbanks, AK",9,32,4;4;4;3;3;3;4;4;3
+Rolling Springs,65.8,"Omaha, NE",18,72,4;3;4;4;5;4;3;3;5;4;4;4;3;4;5;5;3;5
+Mountain View Hills,65.2,"Eugene, OR",9,37,4;3;3;5;5;3;4;5;5
+Ocean Side Valley,70.6,"Memphis, TN",9,37,5;4;4;5;4;4;4;3;4
+Sunny Fairways,68.0,"Topeka, KS",18,71,5;5;4;4;5;3;3;3;4;4;3;3;4;4;5;4;5;3
+Ocean Side Valley,65.6,"Overland Park, KS",9,35,5;4;5;3;4;3;4;4;3
+Ocean Side Links,66.3,"Hilo, HI",18,76,4;5;5;3;5;5;5;5;5;5;3;5;4;4;4;3;3;3
+Sunny Springs,69.4,"Ogden, UT",9,33,3;3;4;5;4;4;3;3;4
+Green Links,73.0,"Memphis, TN",9,34,3;3;3;5;3;3;5;5;4
+Green Hills,71.3,"Portland, OR",18,69,3;5;3;3;4;5;4;5;4;3;4;3;3;3;4;4;5;4
+Mountain View Links,67.8,"Seattle, WA",9,38,4;3;5;4;5;5;3;5;4
+Rolling Valley,65.4,"Omaha, NE",18,74,3;5;4;3;4;4;4;3;4;5;5;3;5;5;5;3;4;5
+Rolling Links,66.6,"Billings, MT",18,72,5;4;3;5;4;4;4;5;3;3;4;3;4;4;5;4;4;4
+Rolling Valley,70.2,"Milwaukee, WI",9,37,5;4;5;5;4;3;3;5;3
+Sunny Valley,74.7,"Boulder, CO",18,68,3;3;4;3;5;3;5;3;4;3;4;4;5;4;3;3;4;5
+Rolling Fairways,74.9,"Jersey City, NJ",9,41,5;3;5;5;5;4;5;4;5
+Ocean Side Springs,73.9,"Grand Forks, ND",18,69,5;5;4;5;3;3;3;5;4;5;3;3;3;3;3;4;5;3
+Rolling Valley,67.0,"Stamford, CT",18,72,5;3;4;3;4;4;4;4;4;4;4;3;5;4;5;3;4;5
+Rolling Valley,71.9,"Fayetteville, AR",18,74,4;4;5;3;4;3;3;5;3;4;4;5;3;4;5;5;5;5
+Rolling Valley,70.8,"Little Rock, AR",9,36,5;5;4;5;4;4;3;3;3
+Sunny Hills,65.6,"Harrisburg, PA",18,71,5;3;3;4;3;3;5;4;5;3;3;3;3;4;5;5;5;5
+Rolling Springs,69.5,"Augusta, GA",9,38,5;5;4;4;4;5;3;4;4
+Rolling Links,71.2,"Portland, ME",18,72,3;4;5;3;4;3;4;5;4;5;4;3;5;5;3;3;4;5
+Sunny Links,69.9,"Los Angeles, CA",9,34,4;4;3;5;3;5;4;3;3
+Mountain View Fairways,67.8,"Huntington, WV",9,37,4;5;3;4;5;5;4;4;3
+Green Springs,70.1,"Rapid City, SD",9,34,3;3;3;3;5;4;3;5;5
+Rolling Valley,72.5,"San Francisco, CA",18,74,5;3;4;5;5;4;5;3;3;3;5;4;5;3;5;5;4;3
+Mountain View Links,68.3,"Fairbanks, AK",18,70,4;3;4;4;5;5;5;3;3;5;3;3;3;3;5;4;5;3
+Ocean Side Fairways,70.2,"Cincinnati, OH",18,76,4;4;4;4;4;4;4;5;4;5;5;4;5;5;3;5;3;4
+Mountain View Hills,65.5,"Milwaukee, WI",9,35,4;3;3;3;5;4;5;5;3
+Sunny Valley,73.6,"Augusta, GA",9,37,3;3;4;5;3;4;5;5;5
+Sunny Springs,69.2,"Billings, MT",9,37,3;4;5;4;5;4;3;4;5
+Rolling Springs,70.4,"Cheyenne, WY",9,38,5;5;4;5;5;3;3;5;3
+Rolling Links,74.1,"Knoxville, TN",9,29,3;3;4;3;3;3;4;3;3
+Ocean Side Links,71.8,"Houston, TX",9,35,4;5;3;4;5;4;3;4;3
+Mountain View Valley,73.3,"Lansing, MI",18,66,5;4;4;4;4;4;3;4;3;3;3;3;3;3;3;4;4;5
+Rolling Springs,67.0,"Mobile, AL",18,72,3;3;5;5;5;5;5;5;5;4;4;4;3;3;3;3;4;3
+Ocean Side Valley,72.5,"Myrtle Beach, SC",18,75,4;4;5;5;3;5;3;5;5;4;5;3;5;3;3;4;4;5
+Rolling Fairways,66.6,"Minneapolis, MN",18,76,4;5;4;5;4;5;4;5;5;5;4;3;4;5;5;3;3;3
+Green Springs,68.1,"Norman, OK",18,76,4;3;4;4;5;5;3;5;5;5;4;4;5;5;4;4;4;3
+Sunny Links,73.9,"Springfield, IL",18,71,4;3;4;5;5;4;4;4;3;4;5;3;3;4;5;3;3;5
+Mountain View Valley,72.8,"Bangor, ME",18,72,4;5;3;5;4;4;3;5;5;4;3;3;4;3;5;5;4;3
+Sunny Hills,66.1,"Virginia Beach, VA",18,69,4;3;3;4;3;4;4;4;5;4;4;4;5;5;3;3;3;4
+Rolling Fairways,72.9,"Charlotte, NC",9,38,4;5;4;4;3;5;5;3;5
+Rolling Fairways,67.7,"Gulfport, MS",18,72,3;5;4;5;3;4;3;5;3;3;5;5;3;3;5;5;4;4
+Ocean Side Hills,68.9,"Richmond, VA",9,38,4;5;5;3;3;5;5;5;3
+Mountain View Links,73.5,"Colorado Springs, CO",9,37,4;3;5;3;3;5;4;5;5
+Ocean Side Fairways,69.5,"Topeka, KS",9,35,3;3;3;3;5;4;5;5;4
+Green Links,69.1,"Minneapolis, MN",18,74,4;5;5;3;5;5;4;4;4;3;3;3;5;5;4;5;4;3
+Sunny Fairways,67.8,"Myrtle Beach, SC",18,71,5;5;5;4;3;5;4;3;3;4;4;3;5;3;3;4;3;5
+Green Valley,67.2,"Annapolis, MD",18,71,3;3;4;5;4;4;4;5;3;4;4;4;5;3;5;3;4;4
+Green Valley,70.3,"Manchester, NH",18,71,3;3;3;5;3;5;4;3;5;5;5;4;4;3;5;4;3;4
+Ocean Side Valley,71.0,"Warwick, RI",18,76,5;5;5;4;4;5;5;4;5;4;5;5;3;3;3;5;3;3
+Green Hills,65.1,"Rutland, VT",18,72,3;4;5;3;5;3;5;3;4;5;5;5;3;3;3;4;4;5
+Rolling Hills,67.1,"Huntington, WV",18,66,3;3;3;4;4;4;4;4;4;3;5;3;5;3;5;3;3;3
+Rolling Hills,71.0,"Philadelphia, PA",18,69,5;3;3;5;4;5;3;3;4;3;3;3;3;5;5;3;5;4
+Mountain View Springs,70.0,"Warwick, RI",18,74,3;3;5;5;3;3;5;5;5;5;4;4;4;4;4;5;4;3
+Ocean Side Links,65.5,"Springfield, MA",9,36,5;5;5;3;3;4;3;3;5
+Rolling Links,67.3,"Springfield, IL",18,70,3;3;4;4;5;5;5;5;5;3;3;3;4;3;5;3;3;4
+Sunny Springs,67.2,"Chicago, IL",18,71,3;3;4;5;3;4;4;5;3;4;3;4;5;3;4;5;4;5
+Green Valley,65.7,"Grand Island, NE",18,70,5;5;3;5;4;4;4;5;5;3;4;4;3;3;3;4;3;3
+Ocean Side Fairways,69.1,"Las Vegas, NV",9,37,3;4;4;3;5;5;5;3;5
+Green Hills,68.8,"St. Louis, MO",18,69,4;5;3;4;4;4;3;3;5;5;3;3;5;3;4;3;4;4
+Rolling Valley,71.1,"Provo, UT",18,73,3;4;4;4;4;3;3;5;4;5;4;5;3;5;4;5;5;3
+Mountain View Springs,65.2,"Springfield, MA",9,37,4;4;3;4;5;4;4;4;5
+Rolling Links,72.0,"Bowling Green, KY",18,70,5;3;3;5;3;5;4;5;5;3;3;5;5;3;3;4;3;3
+Sunny Hills,73.5,"Nashville, TN",18,77,5;5;5;5;3;4;5;3;5;4;5;4;3;4;4;5;5;3
+Ocean Side Hills,66.7,"Newark, NJ",9,35,3;4;4;4;5;5;4;3;3
+Green Springs,66.1,"Lincoln, NE",9,38,5;4;4;5;3;5;4;3;5
+Ocean Side Links,73.0,"Madison, WI",18,69,3;4;4;3;5;4;4;3;5;3;3;5;5;4;3;5;3;3
+Rolling Fairways,74.5,"Lincoln, NE",9,35,5;4;3;3;3;3;5;4;5
+Sunny Fairways,71.1,"Charlotte, NC",18,71,5;3;5;4;5;5;3;3;3;5;4;4;4;3;3;3;4;5
+Sunny Links,70.4,"Reno, NV",9,33,3;3;3;4;3;4;4;5;4
+Ocean Side Fairways,65.6,"Montgomery, AL",9,32,3;4;4;4;3;3;3;5;3
+Ocean Side Fairways,71.2,"Memphis, TN",9,34,5;3;3;5;4;4;3;4;3
+Mountain View Valley,66.3,"Topeka, KS",9,37,4;4;3;4;5;4;5;5;3
+Green Hills,68.8,"Kailua, HI",18,65,4;4;5;4;3;4;3;4;4;3;3;3;3;5;3;3;4;3
+Mountain View Springs,69.1,"Springfield, IL",18,76,3;5;5;5;5;5;5;3;5;5;4;3;4;4;4;3;4;4
+Mountain View Hills,70.8,"Charlotte, NC",9,38,4;4;4;3;4;4;5;5;5
+Rolling Valley,66.8,"Worcester, MA",18,69,3;3;5;3;4;5;5;5;3;3;3;5;5;3;4;4;3;3
+Ocean Side Hills,71.6,"Portland, ME",9,35,3;4;3;5;5;5;3;4;3
+Ocean Side Springs,69.4,"Bowling Green, KY",18,64,5;3;4;3;3;3;3;3;4;3;4;5;3;3;4;4;4;3
+Green Springs,71.5,"Spokane, WA",18,70,4;3;3;3;5;4;5;5;4;3;3;5;4;5;3;4;3;4
+Mountain View Valley,66.9,"Frederick, MD",9,36,3;3;5;5;5;3;4;5;3
+Mountain View Links,73.0,"Chicago, IL",18,73,4;3;3;4;3;4;5;5;3;5;4;5;5;4;5;3;3;5
+Sunny Links,69.5,"Lincoln, NE",9,35,4;4;3;4;4;4;5;4;3
+Sunny Hills,74.2,"Newark, NJ",18,74,4;5;5;5;3;4;4;4;3;3;4;3;5;3;4;5;5;5
+Mountain View Valley,70.4,"Bowling Green, KY",18,71,3;4;5;4;4;3;4;3;3;5;3;4;3;5;4;5;5;4
+Sunny Fairways,72.1,"Nampa, ID",9,36,5;3;5;3;3;4;5;3;5
+Sunny Springs,65.1,"Norfolk, VA",18,70,4;3;4;5;3;4;5;4;3;4;3;5;3;4;5;5;3;3
+Green Springs,70.6,"Peoria, IL",18,66,5;4;3;4;4;3;5;4;3;3;4;3;3;4;3;3;3;5
+Mountain View Links,74.8,"Burlington, VT",18,74,5;3;5;4;3;5;4;4;5;4;5;4;4;3;5;4;4;3
+Ocean Side Fairways,68.1,"Bangor, ME",9,34,3;5;5;3;5;3;4;3;3
+Mountain View Hills,70.3,"Evansville, IN",9,39,4;4;3;5;5;5;4;4;5
+Sunny Links,70.5,"Tulsa, OK",18,71,5;3;3;4;4;4;5;5;3;3;4;3;3;5;5;3;5;4
+Rolling Hills,73.7,"Boston, MA",18,73,3;4;3;3;4;4;4;5;5;5;3;5;5;5;4;3;5;3
+Sunny Fairways,67.7,"Tacoma, WA",9,37,4;5;5;5;5;3;3;4;3
+Green Hills,66.4,"Kansas City, MO",9,38,3;5;3;5;5;5;5;3;4
+Sunny Springs,67.1,"Baltimore, MD",18,64,4;4;3;3;3;5;3;3;3;3;3;3;4;5;4;3;5;3
+Ocean Side Links,68.0,"Sioux Falls, SD",18,69,4;5;3;4;3;4;5;3;3;4;3;4;3;3;4;4;5;5
+Sunny Links,72.8,"Newark, DE",9,35,4;3;4;3;4;4;5;4;4
+Sunny Springs,70.1,"Myrtle Beach, SC",18,75,5;5;4;5;5;4;5;3;3;4;4;4;4;5;3;3;5;4
+Rolling Hills,67.9,"Providence, RI",18,64,5;4;3;5;3;5;5;3;3;3;3;3;3;3;4;3;3;3
+Sunny Fairways,69.8,"Minneapolis, MN",18,74,3;5;5;5;3;5;4;5;4;4;3;5;5;3;5;4;3;3
+Rolling Fairways,74.3,"Hartford, CT",9,38,5;4;4;3;5;5;5;4;3
+Green Hills,74.9,"San Diego, CA",9,38,5;5;3;5;4;5;4;4;3
+Sunny Links,74.5,"Nampa, ID",9,40,5;3;4;4;5;5;5;4;5
+Mountain View Hills,69.3,"Davenport, IA",18,71,3;5;4;4;5;4;3;4;5;4;4;4;3;3;5;5;3;3
+Ocean Side Springs,65.9,"Cranston, RI",18,71,3;4;5;4;5;3;4;4;3;5;4;5;4;4;3;3;3;5
+Ocean Side Hills,73.8,"Springfield, MO",9,35,3;3;4;3;5;4;4;5;4
+Green Fairways,72.4,"Cedar Rapids, IA",9,39,5;3;4;5;3;5;5;5;4
+Sunny Fairways,74.2,"Orlando, FL",9,40,5;5;4;5;5;5;4;4;3
+Rolling Hills,73.5,"Minneapolis, MN",9,34,4;4;3;4;4;5;3;4;3
+Sunny Links,74.8,"San Francisco, CA",9,33,5;3;3;5;4;3;3;3;4
+Mountain View Fairways,69.4,"San Francisco, CA",9,35,4;3;3;3;5;3;5;4;5
+Sunny Hills,65.6,"Duluth, MN",9,36,5;4;5;4;3;3;5;3;4
+Mountain View Hills,70.7,"Philadelphia, PA",18,76,5;4;5;5;4;4;4;5;4;5;3;5;5;3;5;4;3;3
+Ocean Side Links,66.7,"Overland Park, KS",9,34,5;3;3;5;4;4;4;3;3
+Sunny Valley,68.1,"Boulder, CO",9,34,4;3;4;5;4;3;3;3;5
+Green Fairways,71.0,"Henderson, NV",9,39,5;3;4;5;5;4;4;5;4
+Sunny Valley,67.6,"Milwaukee, WI",18,73,4;4;5;5;5;4;4;3;4;5;5;3;3;4;4;3;3;5
+Rolling Links,74.9,"Montgomery, AL",18,74,4;5;5;5;4;4;5;3;5;3;3;5;5;5;4;3;3;3
+Green Hills,67.0,"Peoria, IL",18,68,5;3;3;5;3;5;4;3;5;3;5;3;3;3;4;3;5;3
+Ocean Side Fairways,69.1,"Warwick, RI",18,75,5;5;4;4;4;4;5;5;5;5;4;3;3;4;4;5;3;3
+Green Fairways,68.9,"Montgomery, AL",18,75,5;3;5;3;4;5;4;5;4;4;4;4;5;4;4;4;5;3
+Green Springs,69.9,"Savannah, GA",18,66,3;5;4;3;3;4;4;3;3;3;3;4;5;3;4;3;4;5
+Mountain View Links,68.7,"Memphis, TN",9,35,5;3;3;5;5;3;5;3;3
+Sunny Fairways,71.6,"Concord, NH",9,38,5;4;4;4;4;4;3;5;5
+Sunny Hills,66.1,"Kailua, HI",9,34,5;3;4;3;3;3;5;4;4
+Rolling Fairways,73.2,"Fairbanks, AK",18,74,3;5;3;4;3;4;5;5;3;5;4;5;3;5;5;5;4;3
+Green Fairways,72.0,"Durham, NC",18,65,4;3;3;3;4;3;3;5;4;3;3;4;3;4;4;4;4;4
+Ocean Side Valley,67.2,"New Orleans, LA",9,35,3;4;4;3;4;5;4;4;4
+Ocean Side Fairways,70.2,"Birmingham, AL",18,79,5;5;4;4;4;5;5;5;3;5;5;5;4;5;5;4;3;3
+Ocean Side Springs,70.2,"Phoenix, AZ",9,32,4;4;3;5;3;3;3;3;4
+Green Springs,73.3,"Warwick, RI",9,35,5;3;4;3;5;5;3;4;3
+Rolling Fairways,74.8,"New York, NY",9,39,5;5;5;5;5;4;3;3;4
+Sunny Fairways,74.4,"Tucson, AZ",9,36,4;5;4;4;4;4;3;3;5
+Mountain View Springs,66.0,"St. Paul, MN",18,69,5;3;4;4;5;4;4;5;4;3;3;4;4;3;3;3;4;4
+Ocean Side Links,72.4,"Augusta, ME",9,33,3;5;4;3;3;5;3;3;4
+Green Fairways,68.2,"Manchester, NH",9,34,4;5;4;5;3;3;3;3;4
+Rolling Fairways,70.9,"Knoxville, TN",9,37,4;5;5;4;3;5;3;4;4
+Rolling Fairways,68.5,"Providence, RI",9,33,4;3;4;3;5;3;3;4;4
+Rolling Links,73.1,"Virginia Beach, VA",9,37,4;4;4;4;5;4;5;4;3
+Ocean Side Springs,69.3,"Juneau, AK",9,36,5;5;3;5;4;3;5;3;3
+Ocean Side Springs,73.6,"Dover, DE",18,76,4;3;3;3;5;4;4;5;5;4;3;4;4;5;5;5;5;5
+Ocean Side Fairways,74.3,"Grand Island, NE",18,74,5;5;3;4;4;3;3;5;5;4;4;5;4;3;4;5;3;5
+Rolling Valley,71.4,"Knoxville, TN",18,73,4;3;3;3;5;4;4;5;3;5;5;3;5;5;3;4;5;4
+Rolling Valley,65.7,"Nashua, NH",18,68,3;3;4;3;3;5;5;5;5;3;3;5;3;3;5;4;3;3
+Mountain View Springs,72.8,"Davenport, IA",18,74,4;4;5;3;4;4;4;5;3;4;5;3;4;5;5;4;3;5
+Sunny Fairways,67.1,"Springfield, MA",18,73,5;3;5;5;3;4;3;5;4;4;3;3;3;5;5;5;4;4
+Rolling Springs,68.0,"Rutland, VT",18,68,4;3;4;3;4;5;5;5;5;3;3;3;5;3;3;3;3;4
+Mountain View Valley,71.9,"Norfolk, VA",9,33,4;5;3;4;3;3;3;4;4
+Ocean Side Springs,69.5,"Davenport, IA",18,73,5;3;3;4;4;3;4;4;5;3;5;4;5;5;3;5;5;3
+Sunny Links,67.7,"Peoria, IL",9,34,3;4;5;4;4;3;4;4;3
+Sunny Links,73.8,"Augusta, ME",18,71,5;4;5;3;3;3;3;5;3;5;5;3;5;3;4;5;4;3
+Rolling Hills,73.2,"Cleveland, OH",18,70,3;4;4;3;3;5;4;5;3;4;4;5;4;5;4;3;3;4
+Sunny Hills,68.2,"Boulder, CO",18,74,4;4;3;5;4;4;3;5;4;4;4;5;5;5;4;3;5;3
+Ocean Side Hills,66.6,"Fayetteville, AR",9,36,4;5;4;4;4;5;3;3;4
+Rolling Links,67.8,"Nashua, NH",18,72,3;3;5;4;4;4;5;5;5;3;4;5;4;3;4;4;4;3
+Sunny Valley,65.5,"Wichita, KS",9,37,4;4;3;5;4;3;4;5;5
+Sunny Hills,65.0,"Boise, ID",9,34,3;5;4;3;4;5;3;4;3
+Rolling Valley,69.7,"Boise, ID",9,36,5;3;4;3;3;5;5;5;3
+Green Valley,69.8,"Mesa, AZ",18,70,3;5;4;4;4;4;4;4;5;3;4;3;4;5;3;4;4;3
+Rolling Valley,71.8,"Philadelphia, PA",18,72,4;4;5;3;3;5;5;5;5;3;5;4;4;3;4;3;4;3
+Green Valley,73.0,"Concord, NH",9,38,5;5;3;4;3;5;4;5;4
+Ocean Side Fairways,65.8,"Fayetteville, AR",18,70,3;3;3;5;4;5;3;3;4;3;3;5;3;5;5;5;5;3
+Rolling Links,71.8,"Los Angeles, CA",9,36,3;5;4;5;4;3;5;4;3
+Mountain View Links,70.7,"Boulder, CO",18,66,3;3;3;4;4;3;4;5;3;3;5;5;4;3;4;3;4;3
+Sunny Valley,67.6,"Buffalo, NY",18,67,3;3;4;3;5;5;3;3;4;3;5;5;3;3;3;3;4;5
+Ocean Side Fairways,68.4,"Austin, TX",18,74,5;5;4;3;5;4;5;3;5;4;5;3;4;5;3;4;4;3
+Mountain View Fairways,75.0,"Albuquerque, NM",9,37,5;3;5;5;5;3;3;5;3
+Green Links,74.5,"Green Bay, WI",18,70,4;3;4;3;4;4;5;3;4;4;4;4;3;3;4;5;4;5
+Sunny Links,69.9,"Burlington, VT",9,37,5;5;4;4;4;4;3;4;4
+Rolling Links,67.5,"Dallas, TX",18,71,5;5;3;5;5;4;4;3;4;4;3;5;5;3;3;3;4;3
+Rolling Springs,65.2,"Jackson, MS",9,36,5;4;3;4;3;5;4;3;5
+Green Links,72.8,"Norman, OK",9,33,3;5;3;3;3;5;4;3;4
+Ocean Side Links,66.0,"Charleston, SC",18,70,3;3;3;3;5;5;3;4;3;4;4;5;3;5;5;3;5;4
+Green Links,71.6,"Salt Lake City, UT",18,72,3;5;4;5;3;3;4;5;3;4;4;5;5;3;3;5;5;3
+Sunny Links,73.3,"Columbia, SC",9,36,4;3;4;4;5;3;5;3;5
+Sunny Links,68.8,"Augusta, GA",18,74,4;5;4;5;5;4;4;3;4;5;5;3;4;3;5;3;5;3
+Rolling Hills,67.9,"Springfield, MA",18,72,4;5;5;4;3;4;4;3;5;3;3;4;5;5;4;4;3;4
+Mountain View Valley,74.2,"Newark, NJ",18,73,5;3;3;5;5;5;5;3;5;4;5;3;3;5;3;3;5;3
+Sunny Hills,71.5,"Milwaukee, WI",18,74,3;5;5;4;3;4;3;5;3;5;5;5;3;5;4;4;5;3
+Mountain View Links,71.8,"Miami, FL",9,40,5;5;3;5;3;5;5;5;4
+Green Hills,70.8,"Baltimore, MD",18,76,5;3;5;5;4;4;5;5;3;5;3;5;5;5;4;4;3;3
+Ocean Side Links,68.2,"Cranston, RI",18,66,4;4;3;4;3;3;4;4;4;4;3;3;3;3;5;5;3;4
+Ocean Side Valley,71.3,"Wilmington, DE",9,38,3;4;4;5;5;5;5;4;3
+Sunny Springs,68.2,"Houston, TX",9,33,4;4;3;3;4;3;3;4;5
+Ocean Side Valley,70.2,"Bowling Green, KY",18,73,4;3;5;3;3;4;4;5;5;5;3;5;5;3;5;3;4;4
+Rolling Links,72.1,"Tucson, AZ",9,37,5;4;4;3;4;4;5;3;5
+Ocean Side Hills,73.4,"Anchorage, AK",18,68,4;3;4;4;5;3;4;3;5;4;4;3;5;4;3;3;4;3
+Mountain View Links,70.8,"Omaha, NE",9,33,4;3;3;5;3;3;5;4;3
+Sunny Links,69.0,"Columbus, OH",18,77,5;3;5;3;5;5;3;3;5;5;5;4;5;5;5;3;5;3
+Green Links,65.6,"Worcester, MA",18,72,4;3;4;4;3;5;3;3;3;5;5;3;4;5;5;5;5;3
+Green Links,67.0,"Hartford, CT",18,73,4;5;5;3;3;4;4;4;5;4;3;4;4;3;5;5;3;5
+Rolling Fairways,70.6,"St. Louis, MO",18,70,4;5;3;3;4;3;3;5;3;3;4;4;5;4;4;4;4;5
+Sunny Valley,67.1,"Peoria, IL",18,70,3;3;3;3;5;5;3;4;4;5;5;4;4;3;5;4;3;4
+Green Fairways,72.7,"Manchester, NH",18,77,3;4;3;5;5;4;5;5;5;5;4;3;5;5;5;5;3;3
+Ocean Side Springs,66.2,"Concord, NH",18,71,3;3;5;5;5;3;4;5;4;3;4;3;5;3;5;4;3;4
+Rolling Links,70.2,"Hilo, HI",9,37,5;5;4;5;4;5;3;3;3
+Ocean Side Valley,65.7,"Savannah, GA",9,37,5;5;3;4;4;3;5;5;3
+Ocean Side Links,66.4,"Stamford, CT",18,70,4;5;4;4;3;4;3;5;4;3;3;3;4;4;3;5;5;4
+Ocean Side Fairways,71.7,"Norman, OK",9,35,3;5;3;5;3;5;3;3;5
+Green Hills,68.4,"Springfield, MA",9,35,5;5;3;4;3;5;3;3;4
+Ocean Side Valley,67.6,"Orlando, FL",18,70,4;5;3;4;4;3;4;3;4;3;3;4;4;5;5;4;5;3
+Rolling Fairways,67.6,"Kailua, HI",9,39,5;5;4;5;4;3;5;3;5
+Sunny Springs,70.2,"Seattle, WA",18,70,4;5;3;3;5;3;3;3;5;5;3;4;5;3;5;3;5;3
+Ocean Side Links,74.8,"Kailua, HI",9,36,3;4;4;5;5;3;5;4;3
+Sunny Fairways,65.6,"Augusta, ME",18,73,4;4;4;5;4;4;5;4;3;4;3;5;4;4;4;4;5;3
+Mountain View Fairways,73.2,"Portland, OR",9,35,3;3;4;5;4;5;3;4;4
+Rolling Valley,68.6,"St. Paul, MN",18,72,5;4;3;5;3;3;5;4;5;4;5;5;3;4;4;4;3;3
+Green Hills,70.4,"New Haven, CT",9,34,3;3;3;5;4;3;3;5;5
+Mountain View Links,70.2,"New York, NY",18,72,4;4;4;5;3;4;4;5;5;4;4;3;3;4;5;5;3;3
+Mountain View Hills,74.3,"Kailua, HI",9,36,4;5;5;4;3;3;5;3;4
+Sunny Springs,68.7,"Trenton, NJ",18,72,4;5;3;3;3;4;4;5;3;4;5;3;5;4;3;4;5;5
+Mountain View Springs,72.1,"Fayetteville, AR",18,74,5;5;5;5;5;4;5;4;4;3;4;4;3;3;3;5;3;4
+Green Valley,65.8,"Davenport, IA",9,38,3;5;3;5;5;4;5;5;3
+Green Valley,73.9,"Duluth, MN",18,71,5;3;4;4;5;3;3;3;5;4;5;3;3;5;3;5;5;3
+Ocean Side Valley,68.0,"Davenport, IA",18,69,5;5;4;3;5;3;3;4;3;3;5;5;3;3;5;4;3;3
+Sunny Links,68.3,"Fayetteville, AR",9,34,3;3;4;5;4;4;4;3;4
+Rolling Springs,66.0,"Rapid City, SD",9,32,3;3;4;3;3;4;4;5;3
+Sunny Links,65.5,"Pittsburgh, PA",9,33,3;3;4;3;4;5;3;3;5
+Green Links,75.0,"Minneapolis, MN",18,73,4;3;5;3;3;4;3;5;3;5;3;5;5;4;5;5;4;4
+Sunny Springs,73.9,"Wilmington, DE",9,37,5;3;4;3;3;5;4;5;5
+Green Hills,69.8,"Madison, WI",18,68,4;5;3;3;4;5;4;4;3;3;3;3;4;5;3;4;4;4
+Ocean Side Fairways,65.5,"Fargo, ND",18,74,4;3;3;5;5;5;4;3;5;5;4;5;3;5;4;5;3;3
+Sunny Valley,66.4,"Kansas City, MO",18,70,3;3;3;4;4;3;5;5;4;4;5;5;3;4;4;3;5;3
+Ocean Side Hills,73.0,"Philadelphia, PA",9,33,3;3;3;3;4;4;5;4;4
+Mountain View Fairways,66.8,"Durham, NC",18,74,5;5;4;5;4;5;3;4;4;5;4;5;3;4;4;4;3;3
+Rolling Springs,74.2,"New York, NY",9,35,5;5;4;3;3;3;5;4;3
+Mountain View Fairways,70.8,"Duluth, MN",9,38,5;4;3;5;4;3;5;5;4
+Green Valley,65.3,"Jersey City, NJ",9,34,5;3;5;4;3;5;3;3;3
+Rolling Hills,71.2,"Peoria, IL",18,68,3;4;4;4;5;3;4;3;3;4;3;3;5;5;4;4;3;4
+Sunny Links,66.5,"Fargo, ND",9,38,4;3;5;5;5;5;4;4;3
+Mountain View Springs,71.7,"Sioux Falls, SD",9,39,5;3;5;5;4;5;4;3;5
+Rolling Hills,69.9,"Oklahoma City, OK",9,39,4;3;5;5;4;5;5;5;3
+Rolling Springs,67.8,"Bangor, ME",18,74,3;5;3;5;4;3;5;5;5;3;4;4;3;3;5;4;5;5
+Mountain View Springs,68.7,"Worcester, MA",9,39,5;5;5;4;5;5;4;3;3
+Sunny Springs,69.3,"Los Angeles, CA",9,39,5;5;5;5;3;3;4;4;5
+Mountain View Springs,69.1,"Myrtle Beach, SC",9,36,4;5;5;3;3;4;5;4;3
+Green Links,70.0,"Springfield, MO",9,33,4;3;3;3;4;3;5;4;4
+Sunny Springs,69.0,"Phoenix, AZ",9,35,4;4;3;4;4;4;4;5;3
+Green Valley,74.0,"Frederick, MD",18,73,3;4;5;4;4;4;5;5;5;4;3;4;5;3;4;4;3;4
+Ocean Side Springs,67.0,"Reno, NV",18,67,5;3;5;3;4;5;3;3;3;4;3;5;3;4;4;3;3;4
+Green Valley,66.5,"Myrtle Beach, SC",9,39,5;4;3;5;5;4;3;5;5
+Ocean Side Links,71.3,"Warwick, RI",9,36,3;3;5;5;4;5;3;4;4
+Mountain View Valley,65.9,"Las Cruces, NM",18,74,4;4;4;5;4;4;4;5;5;4;5;3;4;5;3;5;3;3
+Ocean Side Valley,65.2,"Portland, ME",18,75,4;4;3;5;3;4;4;5;4;5;5;4;4;4;4;5;5;3
+Sunny Fairways,69.5,"Concord, NH",18,75,5;4;4;3;5;5;5;3;4;5;4;4;3;4;5;5;4;3
+Mountain View Fairways,70.2,"Trenton, NJ",18,68,3;3;3;5;4;4;4;5;3;3;3;3;5;5;3;3;4;5
+Ocean Side Links,65.8,"Dallas, TX",18,75,3;3;5;4;4;4;5;3;5;3;4;5;5;5;5;4;5;3
+Sunny Valley,67.5,"Bowling Green, KY",18,72,5;5;3;4;5;5;4;4;4;5;4;4;3;3;4;3;4;3
+Ocean Side Springs,70.1,"Concord, NH",9,30,4;3;3;5;3;3;3;3;3
+Green Valley,65.6,"Duluth, MN",18,75,5;4;3;3;5;5;3;3;3;5;5;3;5;4;5;5;4;5
+Sunny Links,71.4,"Columbus, OH",18,77,5;5;5;5;5;4;3;4;5;4;5;4;4;4;5;4;3;3
+Ocean Side Springs,67.2,"Shreveport, LA",9,38,3;3;5;3;5;4;5;5;5
+Rolling Links,72.9,"Rochester, NY",18,71,4;5;3;4;5;3;4;5;3;5;3;5;4;3;3;5;3;4
+Ocean Side Links,71.2,"Duluth, MN",18,72,3;4;5;4;4;4;5;5;3;5;4;4;5;4;3;4;3;3
+Ocean Side Links,74.4,"Oklahoma City, OK",9,36,4;4;3;4;3;5;5;5;3
+Sunny Fairways,69.7,"Birmingham, AL",9,35,4;5;3;3;3;5;5;3;4
+Rolling Fairways,68.8,"Memphis, TN",18,71,3;3;5;5;3;5;4;3;4;5;5;3;5;3;4;4;3;4
+Rolling Valley,65.7,"Stamford, CT",9,32,5;3;4;3;3;3;5;3;3
+Green Hills,70.8,"Rochester, NY",9,36,5;5;4;3;4;4;3;3;5
+Mountain View Fairways,68.1,"Cheyenne, WY",9,34,4;4;5;5;4;3;3;3;3
+Mountain View Links,70.7,"Philadelphia, PA",18,74,4;4;4;3;5;5;5;5;3;5;4;5;5;3;4;3;4;3
+Green Springs,74.8,"Montgomery, AL",18,70,4;5;3;3;5;4;3;3;4;3;4;3;4;5;4;4;5;4
+Rolling Valley,70.5,"New York, NY",18,65,3;3;4;4;3;3;4;5;3;3;3;3;5;3;4;3;5;4
+Sunny Hills,74.4,"Augusta, ME",18,73,4;5;5;3;5;5;3;4;3;5;4;5;3;3;4;4;5;3
+Green Links,70.2,"Pittsburgh, PA",18,70,3;3;4;5;5;4;3;4;3;4;3;5;3;4;5;4;3;5
+Sunny Links,74.2,"Rochester, NY",9,36,4;3;5;4;4;5;3;5;3
+Green Fairways,71.2,"New Haven, CT",18,73,3;3;3;4;5;5;4;4;3;4;4;5;4;5;5;4;3;5
+Sunny Valley,73.3,"Houston, TX",9,37,5;4;4;5;3;3;5;5;3
+Ocean Side Springs,66.0,"Durham, NC",9,34,3;5;3;4;4;4;5;3;3
+Mountain View Links,70.1,"Myrtle Beach, SC",18,71,3;4;4;4;5;5;4;3;3;3;4;5;3;5;3;3;5;5
+Ocean Side Links,73.2,"Fargo, ND",9,36,3;5;3;3;5;4;5;4;4
+Ocean Side Springs,71.4,"Knoxville, TN",9,37,5;5;3;4;3;4;5;3;5
+Mountain View Valley,67.0,"Bismarck, ND",18,69,4;3;5;3;4;5;4;5;4;4;3;3;4;3;5;3;3;4
+Mountain View Fairways,66.6,"Wilmington, DE",9,37,3;5;4;3;5;5;5;4;3
+Ocean Side Hills,70.3,"Denver, CO",18,78,4;5;4;5;4;5;4;3;5;4;5;5;5;5;4;5;3;3
+Mountain View Fairways,69.8,"Eugene, OR",18,75,4;5;5;5;4;4;5;5;4;3;5;3;3;5;3;3;5;4
+Mountain View Springs,71.6,"Phoenix, AZ",9,32,4;3;4;4;5;3;3;3;3
+Ocean Side Hills,75.0,"Newark, NJ",18,72,4;5;4;5;3;4;4;3;4;3;4;5;4;3;3;5;4;5
+Mountain View Links,72.2,"Austin, TX",18,73,4;4;5;4;4;4;3;3;3;5;3;5;5;4;5;3;5;4
+Green Fairways,71.8,"Memphis, TN",9,40,5;5;5;5;3;4;5;5;3
+Mountain View Links,74.3,"Memphis, TN",9,37,5;3;5;4;3;4;4;4;5
+Green Hills,71.1,"Seattle, WA",9,37,5;4;3;5;4;3;5;3;5
+Mountain View Links,72.5,"Cincinnati, OH",9,35,5;3;3;5;3;5;3;3;5
+Mountain View Springs,70.4,"Springfield, MO",9,32,3;3;3;3;3;4;5;4;4
+Ocean Side Hills,70.2,"Springfield, MA",18,75,4;4;4;4;5;4;3;5;4;5;4;5;4;5;4;4;4;3
+Mountain View Springs,69.2,"Dallas, TX",9,39,5;5;5;5;4;5;3;3;4
+Mountain View Hills,71.1,"Mobile, AL",18,71,4;3;5;4;4;4;5;5;3;4;4;5;3;4;4;4;3;3
+Green Fairways,68.5,"Spokane, WA",18,80,5;5;5;5;4;5;5;5;5;4;5;3;3;5;5;5;3;3
+Ocean Side Valley,74.6,"Montpelier, VT",18,72,5;4;5;3;3;5;4;3;5;4;3;5;4;3;3;3;5;5
+Sunny Hills,67.0,"Duluth, MN",9,33,3;3;5;3;3;3;5;4;4
+Sunny Springs,74.5,"Las Vegas, NV",9,35,3;5;3;4;5;4;5;3;3
+Mountain View Fairways,69.9,"Anchorage, AK",18,70,3;4;4;4;4;3;5;4;4;5;4;5;4;3;3;3;3;5
+Ocean Side Springs,71.1,"Austin, TX",9,33,3;5;3;4;5;4;3;3;3
+Green Valley,69.5,"Shreveport, LA",18,71,3;3;4;5;5;3;5;5;4;5;3;3;3;4;3;5;3;5
+Green Links,69.5,"Laramie, WY",18,73,4;4;3;4;3;5;4;4;5;4;5;3;5;5;3;5;4;3
+Rolling Valley,73.1,"Annapolis, MD",18,71,3;5;5;3;5;5;3;3;5;3;4;5;4;5;3;4;3;3
+Ocean Side Hills,74.9,"Madison, WI",9,36,3;3;5;5;4;5;3;3;5
+Ocean Side Fairways,71.0,"Rochester, NY",9,38,4;5;4;3;3;5;5;5;4
+Ocean Side Links,67.3,"Raleigh, NC",9,38,5;5;5;3;3;3;5;5;4
+Sunny Valley,71.6,"Shreveport, LA",9,37,4;4;3;5;5;3;3;5;5
+Rolling Springs,69.2,"Atlanta, GA",9,34,3;3;3;5;5;5;3;4;3
+Ocean Side Springs,74.8,"Grand Forks, ND",9,33,3;5;5;3;4;3;4;3;3
+Rolling Valley,66.4,"Charlotte, NC",9,32,3;3;3;3;4;5;3;4;4
+Ocean Side Springs,69.0,"Trenton, NJ",18,72,5;3;5;5;5;3;4;4;5;4;5;3;3;3;5;3;4;3
+Green Links,71.7,"Cheyenne, WY",9,36,3;4;5;3;4;4;5;4;4
+Ocean Side Springs,67.5,"Indianapolis, IN",9,31,3;3;3;4;3;3;4;4;4
+Green Links,72.1,"Kansas City, MO",18,77,5;4;5;5;4;5;4;5;3;5;4;5;3;4;5;5;3;3
+Ocean Side Links,73.3,"Portland, ME",18,68,3;3;3;3;3;4;3;4;3;5;5;3;5;5;5;4;4;3
+Rolling Springs,66.7,"Duluth, MN",18,69,3;4;3;4;5;3;3;3;4;4;4;5;5;4;3;5;3;4
+Rolling Hills,69.6,"Madison, WI",18,72,4;5;3;4;5;4;5;3;3;4;5;3;4;5;5;3;4;3
+Ocean Side Valley,70.9,"Burlington, VT",9,34,4;3;3;5;5;3;4;3;4
+Green Hills,72.0,"Wilmington, DE",9,34,3;4;3;4;4;3;3;5;5
+Mountain View Valley,73.0,"Nashville, TN",18,74,5;5;3;5;3;4;3;5;4;5;5;3;4;3;5;5;4;3
+Sunny Valley,65.1,"Nashua, NH",9,32,3;3;3;5;3;3;5;4;3
+Sunny Valley,66.4,"Montpelier, VT",18,74,3;4;3;4;4;5;4;5;5;3;5;5;4;5;5;4;3;3
+Green Springs,73.8,"Tampa, FL",18,74,5;5;4;4;5;4;3;5;4;3;4;3;3;4;5;5;3;5
+Sunny Hills,70.4,"Myrtle Beach, SC",18,67,4;3;5;3;3;4;5;3;4;3;4;4;3;5;4;3;3;4
+Mountain View Hills,74.2,"Salem, OR",18,69,3;4;4;4;5;4;3;3;3;5;4;4;3;5;3;5;3;4
+Rolling Hills,69.8,"San Francisco, CA",9,34,4;4;4;3;5;3;3;3;5
+Rolling Fairways,72.0,"Fayetteville, AR",9,35,3;3;3;3;5;4;5;5;4
+Mountain View Links,73.1,"Aberdeen, SD",18,77,4;5;5;4;4;5;4;4;5;5;3;5;3;5;5;5;3;3
+Sunny Fairways,73.0,"Warwick, RI",9,36,4;3;5;3;4;5;4;3;5
+Mountain View Valley,65.6,"Madison, WI",9,31,3;3;5;3;3;3;3;4;4
+Ocean Side Fairways,65.2,"San Diego, CA",9,39,3;5;5;4;4;5;5;5;3
+Rolling Links,71.6,"Topeka, KS",9,39,5;5;4;4;3;4;5;5;4
+Rolling Fairways,71.8,"Shreveport, LA",9,38,5;4;4;4;5;5;4;4;3
+Mountain View Fairways,73.2,"Billings, MT",9,34,5;4;4;4;3;3;4;3;4
+Green Hills,68.4,"Raleigh, NC",9,35,4;3;5;4;4;5;4;3;3
+Green Valley,70.6,"Charleston, WV",18,71,3;3;4;3;4;3;4;4;5;5;3;5;5;3;3;4;5;5
+Mountain View Links,65.9,"Springfield, MO",9,37,5;3;5;3;4;4;4;5;4
+Rolling Springs,72.2,"Rapid City, SD",9,36,3;4;5;4;3;5;5;4;3
+Rolling Hills,71.2,"Ogden, UT",18,72,5;4;3;4;3;5;4;5;3;5;3;4;5;3;4;3;5;4
+Ocean Side Hills,73.5,"Fairbanks, AK",9,35,3;4;4;3;3;5;5;3;5
+Green Fairways,70.3,"Newark, DE",9,33,3;4;3;4;5;3;4;3;4
+Ocean Side Springs,69.4,"Nampa, ID",18,75,3;5;5;3;5;4;3;4;5;4;4;5;5;5;4;4;4;3
+Rolling Valley,74.7,"Morgantown, WV",9,38,5;3;4;5;4;5;4;3;5
+Sunny Hills,69.5,"Richmond, VA",18,71,3;4;4;3;3;4;5;5;5;4;3;3;5;3;5;5;3;4
+Green Valley,65.6,"Burlington, VT",9,35,4;3;4;3;5;4;4;4;4
+Green Fairways,65.6,"Tampa, FL",9,38,4;3;5;5;4;4;4;4;5
+Mountain View Valley,68.4,"Madison, WI",18,72,4;3;3;5;4;5;4;3;4;5;3;5;5;5;5;3;3;3
+Sunny Hills,70.3,"Davenport, IA",9,32,5;4;3;4;3;3;3;3;4
+Green Hills,67.9,"Denver, CO",18,73,3;4;4;4;4;5;5;4;3;3;5;5;4;5;5;4;3;3
+Green Links,66.4,"Augusta, GA",9,37,5;3;5;3;3;5;4;4;5
+Green Hills,73.4,"Indianapolis, IN",18,74,5;5;4;4;3;4;4;5;3;4;3;4;5;5;5;5;3;3
+Ocean Side Fairways,68.3,"Provo, UT",9,37,4;4;5;4;5;3;4;5;3
+Rolling Valley,72.8,"New Haven, CT",9,36,4;3;5;5;3;5;4;4;3
+Rolling Hills,72.2,"Oklahoma City, OK",9,36,4;5;3;5;4;3;3;5;4
+Sunny Fairways,73.9,"Newark, NJ",18,76,3;4;4;5;4;4;5;5;3;4;5;3;5;5;5;5;4;3
+Rolling Springs,67.6,"Baltimore, MD",18,74,4;4;5;3;5;4;3;5;4;5;3;4;5;4;3;5;5;3
+Mountain View Valley,72.0,"Duluth, MN",18,72,3;4;5;5;3;3;5;3;4;3;3;5;4;5;5;5;4;3
+Sunny Fairways,70.0,"Topeka, KS",9,34,3;5;5;3;3;3;3;4;5
+Sunny Valley,74.6,"Hilo, HI",9,39,3;4;5;4;3;5;5;5;5
+Green Springs,66.0,"Hilo, HI",9,34,3;4;4;3;5;3;5;4;3
+Green Links,74.1,"Lansing, MI",18,66,4;3;3;4;3;3;3;5;4;3;3;3;5;4;3;4;4;5
+Rolling Fairways,69.3,"Salt Lake City, UT",18,76,4;5;5;4;5;5;3;3;4;5;3;5;5;4;4;4;3;5
+Green Hills,67.0,"Virginia Beach, VA",18,73,4;3;3;4;4;3;5;4;4;4;4;5;5;5;4;3;4;5
+Green Fairways,69.6,"Tacoma, WA",9,37,5;3;5;4;5;4;4;3;4
+Green Fairways,71.2,"Grand Forks, ND",9,35,4;3;3;4;4;3;5;5;4
+Ocean Side Links,70.9,"Miami, FL",18,69,4;4;5;3;3;4;4;3;3;3;5;4;5;4;4;3;3;5
+Sunny Fairways,72.0,"Fort Smith, AR",18,72,5;4;3;5;5;4;3;4;5;5;3;4;4;4;4;4;3;3
+Sunny Links,65.7,"Omaha, NE",9,37,3;3;4;4;3;5;5;5;5
+Sunny Fairways,68.6,"Boston, MA",18,73,5;3;4;3;4;5;5;4;4;4;3;4;5;3;5;5;4;3
+Mountain View Valley,72.2,"Newark, DE",9,39,4;4;3;5;5;5;4;4;5
+Sunny Hills,69.3,"Philadelphia, PA",18,76,4;3;3;5;5;5;5;4;4;5;5;3;5;4;4;5;4;3
+Rolling Hills,72.8,"Baltimore, MD",9,33,3;3;3;5;3;5;3;5;3
+Green Valley,66.4,"Columbia, SC",9,30,3;4;4;3;4;3;3;3;3
+Rolling Fairways,66.1,"Sioux Falls, SD",18,71,4;5;4;3;4;4;5;3;4;4;3;4;3;5;5;5;3;3
+Rolling Springs,67.6,"Bismarck, ND",18,71,4;3;4;4;3;4;5;5;5;4;4;4;3;4;4;3;5;3
+Green Valley,72.2,"Shreveport, LA",9,38,4;3;5;4;3;5;5;4;5
+Sunny Springs,74.7,"San Diego, CA",18,74,5;5;4;4;3;5;5;3;4;4;3;4;5;3;4;5;3;5
+Rolling Hills,66.8,"Fayetteville, AR",9,38,5;4;4;3;5;4;5;5;3
+Rolling Fairways,74.7,"Kansas City, MO",9,36,5;3;5;4;3;5;5;3;3
+Green Springs,68.8,"New Haven, CT",9,36,4;5;3;4;4;3;3;5;5
+Green Fairways,73.6,"Richmond, VA",9,34,4;4;3;4;5;5;3;3;3
+Mountain View Valley,70.4,"Salt Lake City, UT",18,71,4;4;4;4;4;5;4;3;4;5;3;4;4;3;4;4;5;3
+Ocean Side Fairways,67.5,"Rutland, VT",18,72,4;4;5;5;3;3;3;5;3;3;5;3;5;3;5;5;3;5
+Mountain View Springs,71.0,"Las Cruces, NM",9,38,5;5;5;5;3;4;4;4;3
+Mountain View Valley,73.4,"Cincinnati, OH",9,33,5;4;4;3;4;3;3;3;4
+Mountain View Springs,65.2,"Springfield, IL",18,71,4;5;4;4;5;4;3;3;3;4;3;5;5;3;4;4;3;5
+Ocean Side Springs,70.8,"Austin, TX",18,67,4;4;5;4;3;3;3;3;4;4;4;4;3;4;3;4;4;4
+Sunny Valley,71.3,"Bangor, ME",9,36,4;5;4;3;5;4;4;4;3
+Ocean Side Springs,70.8,"Norman, OK",18,63,3;3;3;4;4;4;3;3;5;3;3;3;3;5;4;4;3;3
+Green Springs,74.8,"Honolulu, HI",18,75,4;5;5;3;4;5;3;5;3;4;5;3;5;5;4;5;4;3
+Rolling Valley,72.2,"Durham, NC",18,69,4;3;3;5;3;4;3;3;3;5;4;3;4;4;4;5;5;4
+Rolling Springs,71.7,"Richmond, VA",18,77,5;3;5;5;5;5;5;4;5;5;5;5;4;3;3;4;3;3
+Ocean Side Valley,69.3,"Henderson, NV",9,39,5;4;4;4;5;4;5;5;3
+Green Links,69.0,"Virginia Beach, VA",9,35,4;4;4;5;3;3;3;5;4
+Rolling Valley,74.3,"Grand Rapids, MI",9,36,4;5;5;3;5;3;3;4;4
+Green Hills,74.8,"Hilo, HI",18,76,5;5;5;4;3;5;4;4;5;4;5;5;4;5;4;3;3;3
+Sunny Hills,72.3,"Duluth, MN",18,73,3;4;3;3;5;3;3;5;5;5;5;3;4;5;5;4;5;3
+Sunny Links,68.8,"Juneau, AK",9,36,3;3;5;3;5;5;5;3;4
+Green Fairways,65.6,"Topeka, KS",9,38,5;3;5;3;5;5;5;4;3
+Mountain View Valley,70.0,"Baltimore, MD",9,39,4;5;5;5;5;4;5;3;3
+Green Hills,74.2,"Minneapolis, MN",9,38,4;5;3;3;4;5;5;4;5
+Mountain View Hills,74.8,"Knoxville, TN",9,35,5;4;3;4;4;3;4;5;3
+Rolling Valley,72.1,"Miami, FL",18,70,3;3;4;5;4;4;4;4;4;3;4;4;5;4;3;4;3;5
+Green Links,66.6,"Denver, CO",9,33,5;3;3;4;5;3;4;3;3
+Green Hills,70.4,"Rochester, NY",9,36,4;4;3;4;3;5;5;3;5
+Ocean Side Springs,73.4,"Bowling Green, KY",9,35,5;4;4;3;3;5;3;4;4
+Mountain View Fairways,73.8,"Phoenix, AZ",9,38,5;5;5;4;5;3;5;3;3
+Rolling Links,66.1,"Charleston, SC",18,65,5;4;4;4;3;3;4;4;3;3;3;5;3;3;3;5;3;3
+Ocean Side Springs,69.9,"Salem, OR",18,74,5;3;3;5;4;5;5;3;5;5;4;4;5;4;3;3;3;5
+Green Hills,69.1,"Tucson, AZ",18,72,4;5;4;5;4;4;4;4;4;4;3;3;3;5;4;3;4;5
+Sunny Springs,73.3,"Cedar Rapids, IA",18,67,3;3;3;4;5;4;3;3;5;5;5;4;3;3;3;3;3;5
+Rolling Hills,72.0,"Kansas City, MO",9,38,3;5;5;4;3;5;3;5;5
+Mountain View Springs,70.2,"Anchorage, AK",9,38,3;5;4;4;4;5;5;5;3
+Green Links,72.8,"Topeka, KS",9,34,3;5;5;3;3;4;4;4;3
+Sunny Links,74.1,"Cranston, RI",18,70,4;5;4;5;5;4;3;3;4;3;5;3;5;5;3;3;3;3
+Green Fairways,74.8,"Concord, NH",9,38,3;5;5;5;5;4;3;3;5
+Ocean Side Valley,70.6,"Burlington, VT",9,38,3;5;5;5;5;3;4;3;5
+Mountain View Springs,65.6,"Seattle, WA",9,37,5;3;5;5;4;4;3;5;3
+Rolling Valley,65.6,"Frederick, MD",18,71,5;3;4;5;3;5;5;4;4;5;3;4;4;3;3;4;4;3
+Green Springs,69.0,"Las Vegas, NV",18,71,5;4;3;3;3;4;4;4;4;5;5;3;3;5;3;5;4;4
+Rolling Fairways,66.5,"Savannah, GA",9,32,3;3;5;3;3;5;3;4;3
+Mountain View Valley,69.2,"Huntington, WV",18,74,4;3;3;3;4;4;5;5;5;5;3;5;5;4;5;3;5;3
+Green Valley,71.4,"Fairbanks, AK",18,71,4;5;3;5;4;5;3;4;3;4;3;4;5;4;4;4;3;4
+Green Links,70.6,"Fairbanks, AK",9,37,5;4;3;4;3;5;5;5;3
+Green Fairways,66.9,"Huntington, WV",9,35,5;3;5;4;4;3;3;5;3
+Green Fairways,71.5,"Frederick, MD",9,39,4;3;5;4;5;5;4;5;4
+Mountain View Hills,72.7,"Bowling Green, KY",9,36,3;5;5;3;5;4;4;4;3
+Sunny Valley,70.6,"Green Bay, WI",9,36,5;4;5;4;5;4;3;3;3
+Ocean Side Fairways,70.5,"Fairbanks, AK",9,36,5;5;4;4;4;3;3;5;3
+Mountain View Valley,74.9,"Columbia, SC",9,38,3;4;5;5;3;5;4;5;4
+Ocean Side Fairways,72.9,"New Orleans, LA",18,71,5;4;5;5;4;3;4;4;3;4;3;5;3;4;3;4;4;4
+Ocean Side Valley,71.3,"Columbia, SC",18,70,4;3;3;3;5;5;3;3;4;3;5;5;4;3;4;3;5;5
+Sunny Springs,69.1,"Charleston, WV",18,72,5;5;3;3;3;4;3;5;5;5;5;3;3;5;3;4;3;5
+Mountain View Valley,71.7,"Raleigh, NC",9,34,3;5;4;4;3;4;3;4;4
+Ocean Side Hills,74.6,"Raleigh, NC",18,73,4;3;3;4;3;4;5;4;3;5;5;4;3;5;4;5;5;4
+Sunny Links,66.8,"Mesa, AZ",18,72,5;5;3;4;3;4;3;4;3;4;5;5;3;5;3;4;5;4
+Rolling Springs,71.5,"Dover, DE",9,39,5;5;4;5;3;4;4;4;5
+Rolling Springs,68.5,"Newark, NJ",18,69,3;3;4;5;4;3;5;5;4;5;3;3;3;4;4;5;3;3
+Green Valley,72.9,"Salt Lake City, UT",18,67,4;4;4;3;4;4;3;4;3;4;3;4;5;3;5;3;3;4
+Ocean Side Fairways,68.3,"Indianapolis, IN",18,72,3;4;3;4;5;5;4;5;4;4;3;3;4;4;4;4;4;5
+Mountain View Fairways,70.1,"Norfolk, VA",9,34,3;5;4;3;3;5;5;3;3
+Mountain View Valley,68.1,"Minneapolis, MN",18,76,3;3;5;5;4;5;5;4;5;4;5;3;5;4;3;4;5;4
+Green Fairways,70.7,"Madison, WI",18,71,4;4;3;3;4;4;3;3;3;5;4;5;4;5;5;3;5;4
+Sunny Hills,73.5,"Cedar Rapids, IA",18,77,5;3;3;4;3;4;5;5;4;5;5;5;5;5;5;3;5;3
+Ocean Side Links,74.7,"Salem, OR",18,71,4;3;4;4;5;4;5;5;3;5;3;5;3;3;4;3;5;3
+Mountain View Springs,72.2,"Colorado Springs, CO",9,40,5;5;3;4;4;5;5;5;4
+Sunny Valley,67.6,"Raleigh, NC",18,73,3;3;4;4;5;5;4;4;4;4;3;5;4;3;4;4;5;5
+Ocean Side Hills,69.6,"Wichita, KS",9,37,5;4;4;4;4;5;4;3;4
+Rolling Springs,66.7,"Concord, NH",9,35,5;3;4;5;3;3;5;4;3
+Ocean Side Valley,71.7,"Springfield, MO",9,34,3;5;4;3;3;3;3;5;5
+Rolling Valley,72.8,"Richmond, VA",18,71,5;5;5;3;5;4;4;3;3;4;3;5;3;3;5;4;3;4
+Rolling Valley,73.2,"San Francisco, CA",18,70,5;4;5;3;3;5;4;3;4;4;3;4;3;5;4;4;3;4
+Ocean Side Links,72.5,"Tulsa, OK",9,35,5;3;3;4;4;4;5;3;4
+Sunny Fairways,67.7,"Raleigh, NC",18,70,5;4;3;4;4;3;5;3;3;3;4;5;4;3;4;5;4;4
+Mountain View Hills,73.7,"Honolulu, HI",18,70,4;4;3;3;5;3;4;4;4;3;4;4;5;5;3;4;3;5
+Rolling Valley,66.6,"Santa Fe, NM",18,73,4;4;5;5;3;3;5;5;4;3;3;4;4;5;5;4;4;3
+Mountain View Hills,65.2,"Lexington, KY",18,75,5;4;3;4;5;4;5;3;5;5;3;5;4;3;4;5;4;4
+Rolling Valley,66.4,"Tucson, AZ",9,32,3;4;5;3;4;3;3;3;4
+Mountain View Fairways,72.7,"Lexington, KY",18,67,3;4;5;3;5;3;3;4;3;3;5;3;3;5;3;4;3;5
+Sunny Fairways,65.1,"Augusta, GA",9,35,3;4;5;5;4;3;5;3;3
+Rolling Links,66.3,"Providence, RI",9,38,5;5;5;5;4;3;4;4;3
+Ocean Side Fairways,72.5,"Indianapolis, IN",9,36,3;4;4;5;4;5;4;3;4
+Green Links,69.1,"Baltimore, MD",9,39,5;4;5;4;5;3;3;5;5
+Rolling Springs,65.4,"Worcester, MA",9,38,3;5;5;3;4;5;5;5;3
+Sunny Fairways,70.4,"Las Vegas, NV",18,70,5;3;5;4;4;4;4;3;3;4;4;4;4;3;3;3;5;5
+Green Springs,67.2,"St. Louis, MO",18,74,4;3;5;3;5;3;5;5;4;4;5;4;4;5;5;4;3;3
+Rolling Hills,67.8,"Wichita, KS",9,37,3;5;3;4;5;4;4;5;4
+Sunny Springs,65.3,"Chicago, IL",18,72,4;4;3;5;5;5;3;3;5;3;4;5;4;3;5;3;3;5
+Ocean Side Springs,72.0,"Fairbanks, AK",18,70,5;3;4;5;4;3;3;5;4;3;4;3;4;3;5;3;4;5
+Sunny Springs,72.4,"St. Louis, MO",18,77,3;5;4;4;5;4;5;5;3;5;4;5;3;4;5;3;5;5
+Green Hills,67.7,"Myrtle Beach, SC",9,36,4;3;3;5;4;5;4;5;3
+Sunny Springs,73.6,"Fargo, ND",9,33,3;3;5;4;3;5;3;3;4
+Mountain View Springs,68.2,"Grand Rapids, MI",9,35,4;5;3;4;4;3;5;3;4
+Ocean Side Fairways,71.8,"New Orleans, LA",18,72,4;4;5;5;4;4;5;5;5;3;3;3;3;5;5;3;3;3
+Mountain View Valley,73.3,"Augusta, GA",9,35,5;4;5;4;4;4;3;3;3
+Rolling Springs,65.1,"Orlando, FL",18,66,3;5;4;4;3;3;4;3;5;3;3;3;5;5;3;3;3;4
+Sunny Fairways,70.0,"Los Angeles, CA",18,76,4;5;3;5;5;5;5;4;4;5;4;5;5;4;4;3;3;3
+Green Fairways,70.0,"Missoula, MT",18,67,3;5;3;4;3;3;4;4;4;3;3;4;5;5;4;3;3;4
+Rolling Springs,65.3,"Minneapolis, MN",18,71,5;5;3;4;3;3;4;3;5;3;3;4;5;3;5;5;3;5
+Sunny Hills,66.7,"Nampa, ID",18,71,5;4;5;4;5;3;3;3;4;3;5;5;3;4;4;5;3;3
+Rolling Links,72.0,"Madison, WI",9,37,4;3;4;5;5;3;5;5;3
+Rolling Links,65.9,"Dallas, TX",9,37,3;4;5;5;5;3;5;4;3
diff --git a/data/personaldb.json b/data/personaldb.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/data/personaldb.json
@@ -0,0 +1 @@
+[] \ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 28c2fb7..1486a8b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,8 +6,8 @@
<version>1</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <maven.compiler.source>19</maven.compiler.source>
- <maven.compiler.target>19</maven.compiler.target>
+ <maven.compiler.source>21</maven.compiler.source>
+ <maven.compiler.target>21</maven.compiler.target>
</properties>
<dependencies>
<dependency>
@@ -16,6 +16,31 @@
<version>5.4.0</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.dataformat</groupId>
+ <artifactId>jackson-dataformat-csv</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.module</groupId>
+ <artifactId>jackson-module-parameter-names</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jsr310</artifactId>
+ <version>2.20.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.datatype</groupId>
+ <artifactId>jackson-datatype-jdk8</artifactId>
+ <version>2.20.0</version>
+ </dependency>
</dependencies>
<build>
<plugins>
@@ -24,7 +49,10 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
- <release>20</release>
+ <release>21</release>
+ <compilerArgs>
+ <arg>-parameters</arg>
+ </compilerArgs>
</configuration>
</plugin>
<plugin>
@@ -35,4 +63,4 @@
</plugin>
</plugins>
</build>
-</project>
+</project> \ No newline at end of file
diff --git a/src/main/java/design/ParPal.java b/src/main/java/design/ParPal.java
new file mode 100644
index 0000000..db6891e
--- /dev/null
+++ b/src/main/java/design/ParPal.java
@@ -0,0 +1,14 @@
+package design;
+
+import design.persistence.MasterDatabase;
+import design.persistence.PersonalDatabase;
+
+public class ParPal {
+ public static void main(String[] args) {
+ var mdb = MasterDatabase.INSTANCE;
+ var pdb = PersonalDatabase.INSTANCE;
+
+ System.out.println("done");
+
+ }
+}
diff --git a/src/main/java/design/model/Course.java b/src/main/java/design/model/Course.java
index 5f8c43d..f907622 100644
--- a/src/main/java/design/model/Course.java
+++ b/src/main/java/design/model/Course.java
@@ -1,8 +1,12 @@
package design.model;
+import design.model.course_search.ICourse;
+
import java.util.List;
-public class Course {
+public class Course implements ICourse {
+
+ private final int id;
private final String name;
private final int difficultyRating;
private final String location;
@@ -10,7 +14,8 @@ public class Course {
private final int totalPar;
private final List<Hole> holes;
- public Course(String name, int difficultyRating, String location, int holeCount, int totalPar, List<Hole> holes) {
+ public Course(int id, String name, int difficultyRating, String location, int holeCount, int totalPar, List<Hole> holes) {
+ this.id = id;
this.name = name;
this.difficultyRating = difficultyRating;
this.location = location;
@@ -19,11 +24,15 @@ public class Course {
this.holes = holes;
}
+ public int getId() {
+ return id;
+ }
+
public String getName() {
return name;
}
- public int getDifficultyRating() {
+ public float getDifficultyRating() {
return difficultyRating;
}
diff --git a/src/main/java/design/model/Golfer.java b/src/main/java/design/model/Golfer.java
index 8f09067..04ad8bc 100644
--- a/src/main/java/design/model/Golfer.java
+++ b/src/main/java/design/model/Golfer.java
@@ -1,5 +1,7 @@
package design.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+
import java.util.ArrayList;
import java.util.List;
@@ -7,15 +9,24 @@ public class Golfer {
private String username;
private int passwordHash;
private String fullName;
- private final transient List<Course> courses; // might be better to make this like a courseID or something
+ private final List<Course> courses;
private final List<Round> rounds;
+ @JsonCreator
+ private Golfer(String username, int passwordHash, String fullName, List<Course> courses, List<Round> rounds) {
+ this.username = username;
+ this.passwordHash = passwordHash;
+ this.fullName = fullName;
+ this.courses = courses;
+ this.rounds = rounds;
+ }
+
public Golfer(String fullName, String username, String password) {
- this.courses = new ArrayList<>();
- this.rounds = new ArrayList<>();
this.fullName = fullName;
this.username = username;
this.passwordHash = password.hashCode();
+ this.courses = new ArrayList<>();
+ this.rounds = new ArrayList<>();
}
public String getUsername() {
@@ -61,6 +72,4 @@ public class Golfer {
public void addRound(Round round) {
rounds.add(round);
}
-
-
}
diff --git a/src/main/java/design/model/Play.java b/src/main/java/design/model/Play.java
index b61228b..ca6dac2 100644
--- a/src/main/java/design/model/Play.java
+++ b/src/main/java/design/model/Play.java
@@ -1,5 +1,7 @@
package design.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+
import java.util.ArrayList;
import java.util.List;
@@ -7,6 +9,12 @@ public class Play {
private final int distance;
private final List<Swing> swings;
+ @JsonCreator
+ private Play(int distance, List<Swing> swings) {
+ this.distance = distance;
+ this.swings = swings;
+ }
+
public Play(int distance) {
this.swings = new ArrayList<>();
this.distance = distance;
diff --git a/src/main/java/design/model/Round.java b/src/main/java/design/model/Round.java
index 38975da..048a21a 100644
--- a/src/main/java/design/model/Round.java
+++ b/src/main/java/design/model/Round.java
@@ -1,15 +1,25 @@
package design.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
public class Round {
- private final transient Course course;
+ private final Course course;
private final LocalDateTime dateTime;
private final Hole startingHole;
private final List<Play> plays;
+ @JsonCreator
+ private Round(Course course, LocalDateTime dateTime, Hole startingHole, List<Play> plays) {
+ this.course = course;
+ this.dateTime = dateTime;
+ this.startingHole = startingHole;
+ this.plays = plays;
+ }
+
public Round(Course course, LocalDateTime dateTime, Hole startingHole) {
this.course = course;
this.dateTime = dateTime;
diff --git a/src/main/java/design/model/course_search/CourseList.java b/src/main/java/design/model/course_search/CourseList.java
new file mode 100644
index 0000000..82648c2
--- /dev/null
+++ b/src/main/java/design/model/course_search/CourseList.java
@@ -0,0 +1,89 @@
+package design.model.course_search;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import design.model.*;
+
+/*
+ * Defines a list of courses that can be sorted, added to or removed from.
+ * Willem Dalton
+ */
+public class CourseList implements ICourse {
+ private CourseSorter sorter;
+ private List<ICourse> courses;
+
+ public CourseList()
+ {
+ courses = new ArrayList<>();
+ }
+
+ /*
+ * Grab the list of courses
+ */
+ public List<ICourse> getCourses()
+ {
+ return courses;
+ }
+
+ /*
+ * Set the list of courses equal to an existing list
+ */
+ public void setCourses(List<ICourse> courses)
+ {
+ this.courses = courses;
+ }
+
+ /*
+ * set the chosen sorting algorithm for the given list.
+ */
+ public void setSorter(CourseSorter courseSorter)
+ {
+ sorter = courseSorter;
+ }
+
+ /*
+ * Add a new course to the list.
+ */
+ public void add(ICourse course)
+ {
+ courses.add(course);
+ }
+
+ /*
+ * Remove a course from the list.
+ */
+ public void remove(ICourse course)
+ {
+ courses.remove(course);
+ }
+
+ /*
+ * Sort the list.
+ */
+ public void sort()
+ {
+ sorter.sortCourses(courses);
+ }
+
+ /*
+ * All overrides of the ICourse class. This is a drawback of the composite pattern, but it's pretty negligible here. return some dummy values.
+ */
+ @Override
+ public String getName() { return "Course List"; }
+
+ @Override
+ public float getDifficultyRating() { return 0; }
+
+ @Override
+ public String getLocation() { return ""; }
+
+ @Override
+ public int getTotalPar() { return 0; }
+
+ @Override
+ public int getHoleCount() { return 0; }
+
+ @Override
+ public List<Hole> getHoles() { return null; }
+}
diff --git a/src/main/java/design/model/course_search/CourseSorter.java b/src/main/java/design/model/course_search/CourseSorter.java
new file mode 100644
index 0000000..7549645
--- /dev/null
+++ b/src/main/java/design/model/course_search/CourseSorter.java
@@ -0,0 +1,11 @@
+package design.model.course_search;
+
+import java.util.List;
+
+/*
+ * Defines an interface that concrete strategies will implement
+ * Willem Dalton
+ */
+public interface CourseSorter {
+ public void sortCourses(List<ICourse> courses);
+} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/ICourse.java b/src/main/java/design/model/course_search/ICourse.java
new file mode 100644
index 0000000..e50eb1b
--- /dev/null
+++ b/src/main/java/design/model/course_search/ICourse.java
@@ -0,0 +1,18 @@
+package design.model.course_search;
+
+import design.model.Hole;
+
+import java.util.List;
+
+/*
+ * Defines the interface for courses to implement
+ * Willem Dalton
+ */
+public interface ICourse {
+ String getName();
+ float getDifficultyRating();
+ String getLocation();
+ List<Hole> getHoles();
+ int getHoleCount();
+ int getTotalPar();
+}
diff --git a/src/main/java/design/model/course_search/SortByDifficulty.java b/src/main/java/design/model/course_search/SortByDifficulty.java
new file mode 100644
index 0000000..8c3251c
--- /dev/null
+++ b/src/main/java/design/model/course_search/SortByDifficulty.java
@@ -0,0 +1,15 @@
+package design.model.course_search;
+
+import java.util.List;
+import java.util.Comparator;
+
+/*
+ * Concrete strategy for sorting courses by their difficulty rating.
+ * Willem Dalton
+ */
+public class SortByDifficulty implements CourseSorter {
+ public void sortCourses(List<ICourse> courses)
+ {
+ courses.sort(Comparator.comparing(ICourse::getDifficultyRating));
+ }
+} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/SortByHoles.java b/src/main/java/design/model/course_search/SortByHoles.java
new file mode 100644
index 0000000..b1badab
--- /dev/null
+++ b/src/main/java/design/model/course_search/SortByHoles.java
@@ -0,0 +1,15 @@
+package design.model.course_search;
+
+import java.util.List;
+import java.util.Comparator;
+
+/*
+ * Concrete strategy by sorting courses by their hole count (9 or 18)
+ * Willem Dalton
+ */
+public class SortByHoles implements CourseSorter {
+ public void sortCourses(List<ICourse> courses)
+ {
+ courses.sort(Comparator.comparing(ICourse::getHoleCount));
+ }
+} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/SortByLocation.java b/src/main/java/design/model/course_search/SortByLocation.java
new file mode 100644
index 0000000..0d8a8d2
--- /dev/null
+++ b/src/main/java/design/model/course_search/SortByLocation.java
@@ -0,0 +1,15 @@
+package design.model.course_search;
+
+import java.util.List;
+import java.util.Comparator;
+
+/*
+ * Concrete strategy for sorting courses by their location.
+ * Willem Dalton
+ */
+public class SortByLocation implements CourseSorter {
+ public void sortCourses(List<ICourse> courses)
+ {
+ courses.sort(Comparator.comparing(ICourse::getLocation));
+ }
+} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/SortByName.java b/src/main/java/design/model/course_search/SortByName.java
new file mode 100644
index 0000000..2847d3e
--- /dev/null
+++ b/src/main/java/design/model/course_search/SortByName.java
@@ -0,0 +1,15 @@
+package design.model.course_search;
+
+import java.util.List;
+import java.util.Comparator;
+
+/*
+ * Concrete strategy for sorting courses base on their name.
+ * Willem Dalton
+ */
+public class SortByName implements CourseSorter {
+ public void sortCourses(List<ICourse> courses)
+ {
+ courses.sort(Comparator.comparing(ICourse::getName));
+ }
+} \ No newline at end of file
diff --git a/src/main/java/design/model/course_search/SortByPar.java b/src/main/java/design/model/course_search/SortByPar.java
new file mode 100644
index 0000000..9a3eaf9
--- /dev/null
+++ b/src/main/java/design/model/course_search/SortByPar.java
@@ -0,0 +1,15 @@
+package design.model.course_search;
+
+import java.util.List;
+import java.util.Comparator;
+
+/*
+ * Concrete strategy for sorting courses based on their total par.
+ * Willem Dalton
+ */
+public class SortByPar implements CourseSorter {
+ public void sortCourses(List<ICourse> courses)
+ {
+ courses.sort(Comparator.comparing(ICourse::getTotalPar));
+ }
+} \ No newline at end of file
diff --git a/src/main/java/design/persistence/CSVMasterDatabase.java b/src/main/java/design/persistence/CSVMasterDatabase.java
new file mode 100644
index 0000000..fe89191
--- /dev/null
+++ b/src/main/java/design/persistence/CSVMasterDatabase.java
@@ -0,0 +1,83 @@
+package design.persistence;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.MappingIterator;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.dataformat.csv.CsvMapper;
+import com.fasterxml.jackson.dataformat.csv.CsvSchema;
+import design.model.Course;
+import design.model.Hole;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CSVMasterDatabase implements MasterDatabase {
+
+ private final List<Course> cache;
+ private final CsvMapper mapper;
+ private final File file;
+
+ public CSVMasterDatabase(String filename) {
+ this.cache = new ArrayList<>();
+ this.mapper = new CsvMapper();
+ this.file = new File(filename);
+
+ SimpleModule module = new SimpleModule();
+ module.addDeserializer(Course.class, new CourseDeserializer());
+ mapper.registerModule(module);
+
+ try {
+ load();
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public void load() throws IOException {
+ MappingIterator<Course> it = mapper
+ .readerFor(Course.class)
+ .with(CsvSchema.emptySchema().withHeader())
+ .readValues(file);
+
+ cache.addAll(it.readAll());
+ }
+
+ @Override
+ public Course[] getCourses() {
+ return cache.toArray(Course[]::new);
+ }
+
+ @Override
+ public Course getCourse(int id) {
+ return cache.get(id);
+ }
+
+ private static class CourseDeserializer extends JsonDeserializer<Course> {
+ int curID = 0;
+
+ @Override
+ public Course deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+ ObjectNode node = p.getCodec().readTree(p);
+
+ int id = curID++;
+ String name = node.get("Course Name").asText();
+ double difficulty = node.get("Difficulty Rating").asDouble();
+ String location = node.get("Location").asText();
+ int holes = node.get("Number of Holes").asInt();
+ int totalPar = node.get("Total Par").asInt();
+
+ String[] parValues = node.get("Par Per Hole").asText().split(";");
+ List<Hole> holeList = new ArrayList<>();
+ for (int i = 0; i < parValues.length; i++) {
+ holeList.add(new Hole(i + 1, Integer.parseInt(parValues[i].trim())));
+ }
+
+ return new Course(id, name, (int) difficulty, location, holes, totalPar, holeList);
+ }
+ }
+}
diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java
new file mode 100644
index 0000000..0efa362
--- /dev/null
+++ b/src/main/java/design/persistence/JSONPersonalDatabase.java
@@ -0,0 +1,118 @@
+package design.persistence;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.util.DefaultIndenter;
+import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
+import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
+import design.model.Course;
+import design.model.Golfer;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class JSONPersonalDatabase implements PersonalDatabase {
+
+ private final Map<String, Golfer> cache;
+ private final ObjectMapper mapper;
+ private final File file;
+
+ public JSONPersonalDatabase(String filename) {
+ this.file = new File(filename);
+ this.cache = new HashMap<>();
+ this.mapper = new ObjectMapper();
+
+ SimpleModule module = new SimpleModule();
+ module.addDeserializer(Course.class, new CourseIdDeserializer());
+ module.addSerializer(Course.class, new CourseIdSerializer());
+ mapper.registerModule(module);
+ mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
+ mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES));
+ mapper.registerModule(new JavaTimeModule());
+
+ try {
+ load();
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private void load() throws IOException {
+ Golfer[] data = mapper.readValue(file, Golfer[].class);
+ cache.clear();
+ for (Golfer i : data) {
+ cache.put(i.getUsername(), i);
+ }
+ }
+
+ private void save() throws IOException {
+ Golfer[] data = cache.values().toArray(Golfer[]::new);
+ mapper.writer(new CustomPrettyPrinter()).writeValue(file, data);
+ }
+
+ @Override
+ public Golfer[] getGolfers() {
+ return new Golfer[0];
+ }
+
+ @Override
+ public Golfer getGolfer(String username) {
+ return cache.get(username);
+ }
+
+ @Override
+ public void addGolfer(Golfer golfer) throws IOException {
+ cache.put(golfer.getUsername(), golfer);
+ save();
+ }
+
+ @Override
+ public void removeGolfer(Golfer golfer) throws IOException {
+ cache.remove(golfer.getUsername());
+ save();
+ }
+
+ @Override
+ public void updateGolfer(Golfer golfer) throws IOException {
+ cache.put(golfer.getUsername(), golfer);
+ save();
+ }
+
+ private static class CourseIdSerializer extends JsonSerializer<Course> {
+ @Override
+ public void serialize(Course course, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeNumber(course.getId());
+ }
+ }
+
+ private static class CourseIdDeserializer extends JsonDeserializer<Course> {
+ MasterDatabase masterDB = MasterDatabase.INSTANCE;
+
+ @Override
+ public Course deserialize(JsonParser p, DeserializationContext context) throws IOException {
+ int id = p.getValueAsInt();
+ return masterDB.getCourse(id);
+ }
+ }
+
+ private static class CustomPrettyPrinter extends DefaultPrettyPrinter {
+ public CustomPrettyPrinter() {
+ super._arrayIndenter = new DefaultIndenter();
+ super._objectFieldValueSeparatorWithSpaces = _separators.getObjectFieldValueSeparator() + " ";
+ super._arrayEmptySeparator = "";
+ }
+
+ @Override
+ public CustomPrettyPrinter createInstance() {
+ return new CustomPrettyPrinter();
+ }
+ }
+}
diff --git a/src/main/java/design/persistence/MasterDatabase.java b/src/main/java/design/persistence/MasterDatabase.java
index 9dcfc1f..ddc0434 100644
--- a/src/main/java/design/persistence/MasterDatabase.java
+++ b/src/main/java/design/persistence/MasterDatabase.java
@@ -3,6 +3,8 @@ package design.persistence;
import design.model.Course;
public interface MasterDatabase {
+ MasterDatabase INSTANCE = new CSVMasterDatabase("data/golf_courses_1000.csv");
+
Course[] getCourses();
- Course getCourse(String name);
+ Course getCourse(int id);
}
diff --git a/src/main/java/design/persistence/PersonalDatabase.java b/src/main/java/design/persistence/PersonalDatabase.java
index e1023cf..a045d59 100644
--- a/src/main/java/design/persistence/PersonalDatabase.java
+++ b/src/main/java/design/persistence/PersonalDatabase.java
@@ -2,10 +2,14 @@ package design.persistence;
import design.model.Golfer;
+import java.io.IOException;
+
public interface PersonalDatabase {
+ PersonalDatabase INSTANCE = new JSONPersonalDatabase("data/personaldb.json");
+
Golfer[] getGolfers();
Golfer getGolfer(String name);
- void addGolfer(Golfer golfer);
- void removeGolfer(Golfer golfer);
- void updateGolfer(Golfer golfer);
+ void addGolfer(Golfer golfer) throws IOException;
+ void removeGolfer(Golfer golfer) throws IOException;
+ void updateGolfer(Golfer golfer) throws IOException;
}
diff --git a/src/test/java/design/TestCourseList.java b/src/test/java/design/TestCourseList.java
new file mode 100644
index 0000000..e18b9ab
--- /dev/null
+++ b/src/test/java/design/TestCourseList.java
@@ -0,0 +1,86 @@
+package design;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+import design.model.course_search.*;
+import design.model.*;
+
+import java.util.List;
+
+class TestCourseList {
+
+ // A dummy Course implementation for testing
+ private static class DummyCourse implements ICourse {
+ private final String name;
+ private final float difficulty;
+
+ public DummyCourse(String name, float difficulty) {
+ this.name = name;
+ this.difficulty = difficulty;
+ }
+
+ @Override
+ public String getName() { return name; }
+
+ @Override
+ public float getDifficultyRating() { return difficulty; }
+
+ @Override
+ public String getLocation() { return ""; }
+
+ @Override
+ public int getTotalPar() { return 0; }
+
+ @Override
+ public int getHoleCount() { return 0; }
+
+ @Override
+ public List<Hole> getHoles() { return null; }
+ }
+
+ // A simple sorter that sorts courses by difficulty
+ private static class SortByDifficultyTest implements CourseSorter {
+ @Override
+ public void sortCourses(List<ICourse> courses) {
+ courses.sort((c1, c2) -> Float.compare(c1.getDifficultyRating(), c2.getDifficultyRating()));
+ }
+ }
+
+ @Test
+ public void testAddAndRemoveCourses() {
+ CourseList courseList = new CourseList();
+ ICourse course1 = new DummyCourse("Course A", 2.0f);
+ ICourse course2 = new DummyCourse("Course B", 5.0f);
+
+ courseList.add(course1);
+ courseList.add(course2);
+
+ assertEquals(2, courseList.getCourses().size(), "Should have 2 courses after adding");
+ assertTrue(courseList.getCourses().contains(course1), "Course A should be in the list");
+ assertTrue(courseList.getCourses().contains(course2), "Course B should be in the list");
+
+ courseList.remove(course1);
+ assertEquals(1, courseList.getCourses().size(), "Should have 1 course after removal");
+ assertTrue(!courseList.getCourses().contains(course1), "Course A should no longer be in the list");
+ }
+
+ @Test
+ public void testSortCourses() {
+ CourseList courseList = new CourseList();
+ courseList.add(new DummyCourse("Course A", 3.0f));
+ courseList.add(new DummyCourse("Course B", 1.0f));
+ courseList.add(new DummyCourse("Course C", 2.0f));
+
+ // Set sorting strategy
+ courseList.setSorter(new SortByDifficultyTest());
+
+ courseList.sort();
+
+ List<ICourse> sorted = courseList.getCourses();
+ assertEquals("Course B", sorted.get(0).getName(), "First course should have lowest difficulty");
+ assertEquals("Course C", sorted.get(1).getName(), "Second course should have medium difficulty");
+ assertEquals("Course A", sorted.get(2).getName(), "Last course should have highest difficulty");
+ }
+} \ No newline at end of file