PATH: //opt/alt/ruby33/share/ruby/syntax_suggest
FILE_BARU
CREATE
FOLDER_BARU
MKDIR
UPLOAD_FILE
GO
[ .. KEMBALI ]
📄 api.rb
↓
X
📄 around_block_scan.rb
↓
X
📄 block_expand.rb
↓
X
📁 capture/
X
📄 capture_code_context.rb
↓
X
📄 clean_document.rb
↓
X
📄 cli.rb
↓
X
📄 code_block.rb
↓
X
📄 code_frontier.rb
↓
X
📄 code_line.rb
↓
X
📄 code_search.rb
↓
X
📄 core_ext.rb
↓
X
📄 display_code_with_line_numbers.rb
↓
X
📄 display_invalid_blocks.rb
↓
X
📄 explain_syntax.rb
↓
X
📄 left_right_lex_count.rb
↓
X
📄 lex_all.rb
↓
X
📄 lex_value.rb
↓
X
📄 parse_blocks_from_indent_line.rb
↓
X
📄 pathname_from_message.rb
↓
X
📄 priority_engulf_queue.rb
↓
X
📄 priority_queue.rb
↓
X
📄 ripper_errors.rb
↓
X
📄 scan_history.rb
↓
X
📄 unvisited_lines.rb
↓
X
📄 version.rb
↓
X
SAVING...
BERHASIL DIUBAH!
EDITING: priority_queue.rb
# frozen_string_literal: true module SyntaxSuggest # Holds elements in a priority heap on insert # # Instead of constantly calling `sort!`, put # the element where it belongs the first time # around # # Example: # # queue = PriorityQueue.new # queue << 33 # queue << 44 # queue << 1 # # puts queue.peek # => 44 # class PriorityQueue attr_reader :elements def initialize @elements = [] end def <<(element) @elements << element bubble_up(last_index, element) end def pop exchange(0, last_index) max = @elements.pop bubble_down(0) max end def length @elements.length end def empty? @elements.empty? end def peek @elements.first end def to_a @elements end # Used for testing, extremely not performant def sorted out = [] elements = @elements.dup while (element = pop) out << element end @elements = elements out.reverse end private def last_index @elements.size - 1 end private def bubble_up(index, element) return if index <= 0 parent_index = (index - 1) / 2 parent = @elements[parent_index] return if (parent <=> element) >= 0 exchange(index, parent_index) bubble_up(parent_index, element) end private def bubble_down(index) child_index = (index * 2) + 1 return if child_index > last_index not_the_last_element = child_index < last_index left_element = @elements[child_index] right_element = @elements[child_index + 1] child_index += 1 if not_the_last_element && (right_element <=> left_element) == 1 return if (@elements[index] <=> @elements[child_index]) >= 0 exchange(index, child_index) bubble_down(child_index) end def exchange(source, target) a = @elements[source] b = @elements[target] @elements[source] = b @elements[target] = a end end end
SIMPAN PERUBAHAN