ผลต่างระหว่างรุ่นของ "01204212/statuses"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 4 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน)
แถว 1: แถว 1:
 +
: ''Course page: [[01204212]]''
 +
 
You are given an information on comments are posted.  You want to print out a report on that in a nicely form.
 
You are given an information on comments are posted.  You want to print out a report on that in a nicely form.
  
แถว 4: แถว 6:
  
 
* First line: integer ''n'' (the number of comments)
 
* First line: integer ''n'' (the number of comments)
* The next ''n'' lines, each line specify a comment.  Line ''i + 1'' for ''1<=i<=n'' specifies the ''i''-th comment.  In this line, there is an integer ''p'' (''p'' < ''i'') and a string ''s'' (consiting of a - z and an underline (_) whose length is at most 30).  This comment replies to the ''p''-th comment.  If ''p''=0, this comment replies to the status itself.  The string ''s'' is the comment text.   
+
* The next ''n'' lines, each line specify a comment.  Line ''i + 1'' for ''1<=i<=n'' specifies the ''i''-th comment.  In this line, there is an integer ''p'' (''p'' < ''i'') and a string ''s'' (consiting of <tt>a</tt> - <tt>z</tt>, <tt>A</tt> - <tt>Z</tt>, and an underline (<tt>_</tt>) whose length is at most 30).  This comment replies to the ''p''-th comment.  If ''p''=0, this comment replies to the status itself.  The string ''s'' is the comment text.   
  
 
'''Input example'''
 
'''Input example'''
แถว 21: แถว 23:
 
'''Output example'''
 
'''Output example'''
  
For this input, the expected report would be (see the description of the output at the end):
+
For this input, the expected report would be (see the description of the output at the end of this task description):
  
 
<pre>
 
<pre>
แถว 32: แถว 34:
 
   - 4 good_morning_thailand
 
   - 4 good_morning_thailand
 
</pre>
 
</pre>
 +
 +
'''Output'''
 +
 +
The output contains ''n'' lines.  Each line is a comment shown in the nested format (as in the example).  Each line starts with a dash ("-") and is indented based on its comment level.  (Comments of the status (i.e., those comments whose ''p''=0) are level 0, comments that reply on these level 0 comments are level 1, comments that reply on level 1 comments are level 2, and so on.)
  
 
'''Test data:''' [http://theory.cpe.ku.ac.th/~jittat/courses/01204212/tasks/comments/ Download here]
 
'''Test data:''' [http://theory.cpe.ku.ac.th/~jittat/courses/01204212/tasks/comments/ Download here]
 +
 +
'''Sample outputs of the test data'''
 +
 +
''n10.in''
 +
<pre>
 +
- 1 child_ask_time_eye_year_right
 +
- 2 day_thing_high_year_that_you
 +
  - 3 or_old_important_in_fact_be
 +
  - 4 case_but_at_good_time_above
 +
    - 9 work_I_good_work_their_last
 +
  - 5 man_number_say_it_part_do
 +
    - 7 little_few_you_under_as_try
 +
      - 10 her_woman_try_that_case_this
 +
- 6 by_thing_life_fact_little_old
 +
  - 8 take_try_he_seem_different_in
 +
</pre>
 +
 +
''n100.in'' (first 20 lines)
 +
<pre>
 +
- 1 on_long_woman_ask_after_find
 +
  - 4 fact_few_be_right_next_way
 +
  - 95 about_her_way_it_in_to
 +
- 2 take_case_but_first_child_big
 +
  - 6 day_thing_way_try_give_do
 +
    - 7 or_year_under_be_with_ask
 +
      - 12 say_year_leave_life_up_her
 +
        - 17 all_their_call_man_or_great
 +
          - 31 give_call_woman_make_you_man
 +
            - 38 know_under_work_man_or_for
 +
              - 73 by_come_up_an_say_take
 +
            - 49 and_by_her_their_above_have
 +
              - 83 a_would_last_woman_feel_find
 +
        - 22 of_next_you_a_same_last
 +
          - 23 few_but_be_government_I_call
 +
            - 33 their_work_early_high_way_for
 +
        - 28 a_over_his_do_group_fact
 +
          - 52 know_old_time_give_last_thing
 +
          - 55 as_group_not_work_next_work
 +
            - 87 work_eye_into_woman_it_man
 +
</pre>
 +
== Codes ==
 +
Use these codes as your starting point.
 +
 +
=== Comment.java ===
 +
<syntaxhighlight lang="java">
 +
public class Comment {
 +
 +
private int id;
 +
private int parentId;
 +
private String msg;
 +
 +
public Comment(int id, int parentId, String msg) {
 +
this.setId(id);
 +
this.setParentId(parentId);
 +
this.setMsg(msg);
 +
}
 +
 +
public int getId() {
 +
return id;
 +
}
 +
 +
public void setId(int id) {
 +
this.id = id;
 +
}
 +
 +
public int getParentId() {
 +
return parentId;
 +
}
 +
 +
public void setParentId(int parentId) {
 +
this.parentId = parentId;
 +
}
 +
 +
public String getMsg() {
 +
return msg;
 +
}
 +
 +
public void setMsg(String msg) {
 +
this.msg = msg;
 +
}
 +
}
 +
</syntaxhighlight>
 +
 +
=== Main.java ===
 +
<syntaxhighlight lang="java">
 +
import java.io.BufferedReader;
 +
import java.io.InputStreamReader;
 +
 +
public class Main {
 +
 +
public static void main(String [] args) throws Exception {
 +
    BufferedReader reader = new BufferedReader(
 +
              new InputStreamReader(System.in) );
 +
 +
int n = Integer.parseInt(reader.readLine());
 +
Comment[] comments = readComments(n, reader);
 +
 +
// do your work here
 +
}
 +
 +
private static Comment[] readComments(int n, BufferedReader reader) throws Exception {
 +
Comment[] comments = new Comment[n];
 +
 +
for(int i=0; i<n; i++) {
 +
String[] items = reader.readLine().split(" ");
 +
Comment c = new Comment(i+1, Integer.parseInt(items[0]), items[1]);
 +
comments[i] = c;
 +
}
 +
return comments;
 +
}
 +
}
 +
</syntaxhighlight>

รุ่นแก้ไขปัจจุบันเมื่อ 23:43, 17 สิงหาคม 2559

Course page: 01204212

You are given an information on comments are posted. You want to print out a report on that in a nicely form.

Input

  • First line: integer n (the number of comments)
  • The next n lines, each line specify a comment. Line i + 1 for 1<=i<=n specifies the i-th comment. In this line, there is an integer p (p < i) and a string s (consiting of a - z, A - Z, and an underline (_) whose length is at most 30). This comment replies to the p-th comment. If p=0, this comment replies to the status itself. The string s is the comment text.

Input example

7
0 hello_world
0 this_is_another_comment
1 first_reply
2 good_morning_thailand
1 second_one
1 third_one
5 when_it_is_ok

Output example

For this input, the expected report would be (see the description of the output at the end of this task description):

- 1 hello_world
  - 3 first_reply
  - 5 second_one
    - 7 when_it_is_ok
  - 6 third_one
- 2 this_is_another_comment
  - 4 good_morning_thailand

Output

The output contains n lines. Each line is a comment shown in the nested format (as in the example). Each line starts with a dash ("-") and is indented based on its comment level. (Comments of the status (i.e., those comments whose p=0) are level 0, comments that reply on these level 0 comments are level 1, comments that reply on level 1 comments are level 2, and so on.)

Test data: Download here

Sample outputs of the test data

n10.in

- 1 child_ask_time_eye_year_right
- 2 day_thing_high_year_that_you
  - 3 or_old_important_in_fact_be
  - 4 case_but_at_good_time_above
    - 9 work_I_good_work_their_last
  - 5 man_number_say_it_part_do
    - 7 little_few_you_under_as_try
      - 10 her_woman_try_that_case_this
- 6 by_thing_life_fact_little_old
  - 8 take_try_he_seem_different_in

n100.in (first 20 lines)

- 1 on_long_woman_ask_after_find
  - 4 fact_few_be_right_next_way
  - 95 about_her_way_it_in_to
- 2 take_case_but_first_child_big
  - 6 day_thing_way_try_give_do
    - 7 or_year_under_be_with_ask
      - 12 say_year_leave_life_up_her
        - 17 all_their_call_man_or_great
          - 31 give_call_woman_make_you_man
            - 38 know_under_work_man_or_for
              - 73 by_come_up_an_say_take
            - 49 and_by_her_their_above_have
              - 83 a_would_last_woman_feel_find
        - 22 of_next_you_a_same_last
          - 23 few_but_be_government_I_call
            - 33 their_work_early_high_way_for
        - 28 a_over_his_do_group_fact
          - 52 know_old_time_give_last_thing
          - 55 as_group_not_work_next_work
            - 87 work_eye_into_woman_it_man

Codes

Use these codes as your starting point.

Comment.java

public class Comment {

	private int id;
	private int parentId;
	private String msg;

	public Comment(int id, int parentId, String msg) {
		this.setId(id);
		this.setParentId(parentId);
		this.setMsg(msg);
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getParentId() {
		return parentId;
	}

	public void setParentId(int parentId) {
		this.parentId = parentId;
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}
}

Main.java

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	public static void main(String [] args) throws Exception {
	    BufferedReader reader = new BufferedReader(
	               new InputStreamReader(System.in) );

		int n = Integer.parseInt(reader.readLine());
		Comment[] comments = readComments(n, reader); 
		
		// do your work here
	}

	private static Comment[] readComments(int n, BufferedReader reader) throws Exception {
		Comment[] comments = new Comment[n];
		
		for(int i=0; i<n; i++) {
			String[] items = reader.readLine().split(" ");
			Comment c = new Comment(i+1, Integer.parseInt(items[0]), items[1]);
			comments[i] = c;
		}
		return comments;
	}
}